@PostPersist没有叫... @PrePersist是......为什么?

Dan*_*ner 6 java hibernate jpa

我有一个JPA @Entity类,现在使用@PrePersist很长一段时间了.今天我想添加一些功能,我需要该实体的ID.此ID在数据库中由HIBERNATE_SEQUENCE持久化期间生成.它通常 em.persist(实体)之后设置.

由于某种未知的原因,@PrePersist方法被触发...而@PostPersist根本不会触发:

@Entity
public class MyEntity {

    @PrePersist
    protected void onCreate() {
        System.out.println("ExtendedEntity.onCreate()");
    }

    @PostPersist
    protected void afterCreate() {
        System.out.println("ExtendedEntity.afterCreate()");
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用带有Java v7 +,Hibernate v3.3.1.GA和Seam v2.2.2.Final的JBoss v4.2环境......

@PostPersist是否有隐藏的要求?

Dan*_*ner 8

对于其他所有人...... Hibernate事件监听器似乎干扰JPA持久性事件...从我的persistence.xml中删除以下行后,将触发@PostPersist回调.

<property name="hibernate.ejb.event.pre-insert"  value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.pre-update"  value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.pre-delete"  value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-insert" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-update" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-delete" value="my.hibernate.events.listeners.Listener" />
Run Code Online (Sandbox Code Playgroud)

我们甚至不再使用它们......它们从未被完全禁用过.