【发布时间】:2011-02-28 11:54:29
【问题描述】:
我在 PGSQL DB 上使用 JPA/Hibernate。
我的应用程序中有一个实体,我想在每次持久化第一个实体时持久化另一个实体(不同类型的)。例如,每当创建“ORDER”时,我想立即保留一个空的“ORDER_INVOICE”实体并将其连接到订单。它们位于两个不同的表中。
起初我想为 ORDER 实体编写一个 @PostPersist 函数并将 ORDER_INVOICE 持久保存在其中,但我的问题是我在此上下文中没有实体管理器。
我希望避免记住在每次 ORDER 持久化时都持久化 ORDER_INVOICE。
这是正确的方法吗?如果是这样,我如何让 EM 进入 PostPersist?如果没有,还有什么更好的方法?
【问题讨论】:
-
“创建”是指“持续”吗?
-
似乎没有标准化的方法可以做到这一点:来自 JPA 1.0 规范:
"In general, portable applications should not invoke EntityManager or Query operations, access other entity instances, or modify relationships in a lifecycle callback method."。也许您可以使用@JB Nizet 所说的解决方案。 -
@MRalwasser:谢谢,很高兴知道,JB Nizet 的解决方案确实很有帮助。
标签: jpa