hibernate - JPA - hibernate.use_identifier_rollback 抛出 NullPointerException
问题描述
我有以下Main
类,我试图在文件remove()
中EntityManager
使用hibernate.use_identifier_rollback
设置为的属性来调用。true
persistence.xml
public class Main {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("myUnit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Foo foo= em.find(Foo.class, 2L);
em.remove(foo);
Long fooId = foo.getId();
em.getTransaction().commit();
em.close();
}
}
具有以下属性会在调用NullPointerException
该em.remove(foo)
方法时引发。
<property name="hibernate.use_identifier_rollback" value="true" />
以下是完整的堆栈跟踪:
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.persister.entity.AbstractEntityPersister.resetIdentifier(AbstractEntityPersister.java:5362)
at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:164)
at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:72)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:110)
at org.hibernate.internal.SessionImpl.fireDelete(SessionImpl.java:877)
at org.hibernate.internal.SessionImpl.delete(SessionImpl.java:809)
at org.hibernate.internal.SessionImpl.remove(SessionImpl.java:2714)
at mock.Main.main(Main.java:20)
以下是我的 Foo 实体:
@Entity
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
private String name;
//...
}
这可能是什么原因以及如何解决这个问题?