java - Hibernate - 如何使用整数列表?

标签 java hibernate

我有一个实体,其字段类型为 List<Integer> ,并且我在使用 hibernate 保存和加载它时遇到了问题。

我发现了 @ElementCollection (例如 here ),但我无法让它工作。

这是我的实体:

@Entity
public class TestEntity {
    @Id
    private String id;
    @ElementCollection
    private List<Integer> integers;

    public TestEntity() {

    }

    public TestEntity(String id, List<Integer> integers) {
        this.id = id;
        this.integers = integers;
    }

    public String getId() {
        return id;
    }

    public List<Integer> getIntegers() {
        return integers;
    }
}

这是我的主要类(class):

public class Main {
    public static void main(String[] args) {
        try (SessionFactory sessionFactory = createSessionFactory()) {
            try (Session session = sessionFactory.openSession()) {
                TestEntity entity = new TestEntity("id", Arrays.asList(1, 2, 3));
                session.persist(entity);
            }

            try (Session session = sessionFactory.openSession()) {
                TestEntity entity = (TestEntity) session.byId(TestEntity.class.getName()).load("id");
                System.out.println(entity.getIntegers().size());
            }
        }
    }

    private static SessionFactory createSessionFactory() {
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                .configure()
                .build();

        return new MetadataSources(registry)
                .addAnnotatedClass(TestEntity.class)
                .buildMetadata()
                .buildSessionFactory();
    }
}

此代码失败并出现 NullPointerException,因为整数列表为空。我错过了什么?

最佳答案

private List<Integer> integers;
public void setIntegers(List<Integer> integers) {
         this.integers = integers; }

使用 setter 方法会有帮助

  • 由于列表为 null,您将收到 NullPointerException
  • 这可以通过使用 setter 来解决

关于java - Hibernate - 如何使用整数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967964/

相关文章:

java - 单击按钮时调用 java 方法

.net - 如何使用 NHibernate 中的 Criteria API 进行自定义投影?

java - HQL查询中的拆分表字段值

java - 在JPA中,如何知道entityManager.persist(obj)是否已将对象持久化到数据库中?

java - Jackson:将 JSON 数组从 JSON 对象反序列化为 Java 列表

java - TreeMap iterator.remove() 修改最后一个Entry

java - Thread.exit 行 : not available. 未找到源。编辑源查找路径...?

java - 将 JSON 数据转换为一组 Java 对象

java - Hibernate:java.lang.IllegalArgumentException:无法设置 int 字段

java - 在 HQL 中的两个表之间使用 LEFT JOIN