当前位置: 首页 > 知识库问答 >
问题:

@Postpersisted未调用...@Prepersisted是...为什么?

何章横
2023-03-14

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

@Entity
public class MyEntity {

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

    @PostPersist
    protected void afterCreate() {
        System.out.println("ExtendedEntity.afterCreate()");
    }
}

共有1个答案

巴宏恺
2023-03-14

对其他人来说...Hibernate事件侦听器似乎会干扰JPA持久性事件。从persistence.xml中删除以下行后,将触发@PostPersisted回调。

<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" />

我们甚至不再用这些了...他们只是从来没有完全残疾过。

 类似资料:
  • 下面是我的代码: 实体->区域 接口,用于实体共享相同的外部EntityListener 下面是我执行上面的Main方法时的控制台日志 下面是我的pom.xml

  • 问题内容: 我正在我的应用程序上执行以下操作,但是我无法获取routeChangeSuccess事件。 如下所示的非常简单的html也会失败 但是,当我单击链接时,我看到视图正在更新,但是从未触发$ routeChangeSucces事件。 有什么我想念的吗? *我遇到的 *另一个问题 是,可以挂接一个事件以知道视图已准备好,这样我就可以开始一些其他处理,例如document.ready()。 p

  • 问题内容: 在过去的两天里,我试图 理解 Java如何处理图形,但是在此方面却惨败。我的主要问题是确切了解如何/何时调用paint()(或较新的paintComponent())。 在下面的代码中,我将看到何时创建事物,除非我自己手动添加对它的调用或JFrame.paintAll()/ JFrame.paintComponents()的调用,否则永远不会调用paintComponent()。 我将

  • 我不知道为什么我的GETendpoint被调用,但我的POSTendpoint不工作。当我调用时,它成功地返回 但是当我打电话的时候 我一直得到这样的回应: 这是我的密码

  • 问题内容: 我读过,我们应该始终在循环内调用a : 它可以正常工作而没有循环,那为什么呢? 问题答案: 你不仅需要循环它,还需要在循环中检查条件。Java不能保证仅通过notify()/ notifyAll()调用或正确的notify()/ notifyAll()调用来唤醒你的线程。由于此属性,无环版本可能在你的开发环境上工作,而在生产环境上意外失败。 例如,你正在等待一些东西: 邪恶的线程出现了

  • 问题内容: 我只是想简化我的一个类,并以与flyweight设计模式相同的样式介绍了一些功能。 但是,对于为什么总是调用after ,我有点困惑。我没想到这一点。谁能告诉我为什么会这样,否则我如何实现此功能?(除了将实现放入hack之外)。 这是一个例子: 输出: 为什么? 问题答案: 使用 时,你需要控制一个新实例的创建。 使用 时,你需要一个新的实例的控件初始化。 是实例创建的第一步。首先调用