我有一个实体,其字段类型为 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/