【发布时间】:2011-05-15 13:51:14
【问题描述】:
我正在收集有关 flush() 方法的信息,但我不太清楚何时使用它以及如何正确使用它。根据我的阅读,我的理解是持久化上下文的内容将与数据库同步,即。 e.发出未完成的报表或刷新实体数据。
现在我得到了以下两个实体 A 和 B 的场景(一对一的关系,但不是由 JPA 强制执行或建模的)。 A 有一个复合 PK,它是手动设置的,还有一个自动生成的 IDENTITY 字段recordId。这个recordId 应该作为A 的外键写入实体B。我将A 和B 保存在一个事务中。问题是自动生成的值A.recordId 在事务中不可用,除非我在A 上调用em.persist() 后显式调用em.flush()。 (如果我有一个自动生成的 IDENTITY PK,那么该值会直接在实体中更新,但这里不是这种情况。)
em.flush() 在事务中使用会造成任何伤害吗?
【问题讨论】:
标签: java hibernate jpa transactions persistence