编辑:我误解了hibernate文档,@PrePersist
完全符合我的要求。 Stackoverflow不会让我删除这个问题所以我会把它留在这里以供其他人娱乐。
在实体第一次持久化之前,Hibernate中是否有回调?我有一些计算应该在实体首次保存之前完成,但是一旦实体被写入数据库一次就不应该重复。
我正在寻找像@PrePersist
这样的东西,但只在第一次持续之前被调用。
答案 0 :(得分:1)
@PrePersist
将仅被调用一次。在Hibernate中,如果你多次持久化同一个实体,后面的尝试将不会成功,因为实体之前已经存在,因此不会有任何@PrePersist
为实体多次调用的情况
答案 1 :(得分:0)
是。在@PrePersist
来电中,您只能执行一次操作。您需要一个标志,告诉您该动作是否已经执行过。
答案 2 :(得分:0)
如果您不想在@PrePersist
带注释的方法中实施计算,则可以尝试设置Entity Interceptor,如果您打开新的hibernate会话:
Session session = sessionFactory.openSession(new MyBeforePersistInterceptor());