首先持久化之前的Hibernate回调

时间:2015-05-05 06:58:44

标签: java hibernate jpa

编辑:我误解了hibernate文档,@PrePersist完全符合我的要求。 Stackoverflow不会让我删除这个问题所以我会把它留在这里以供其他人娱乐。

在实体第一次持久化之前,Hibernate中是否有回调?我有一些计算应该在实体首次保存之前完成,但是一旦实体被写入数据库一次就不应该重复。

我正在寻找像@PrePersist这样的东西,但只在第一次持续之前被调用。

3 个答案:

答案 0 :(得分:1)

当实体被持久化时,

@PrePersist将仅被调用一次。在Hibernate中,如果你多次持久化同一个实体,后面的尝试将不会成功,因为实体之前已经存在,因此不会有任何@PrePersist为实体多次调用的情况

答案 1 :(得分:0)

是。在@PrePersist来电中,您只能执行一次操作。您需要一个标志,告诉您该动作是否已经执行过。

答案 2 :(得分:0)

如果您不想在@PrePersist带注释的方法中实施计算,则可以尝试设置Entity Interceptor,如果您打开新的hibernate会话:

Session session = sessionFactory.openSession(new MyBeforePersistInterceptor());