我正在收集有关flush()方法的信息,但是我不清楚何时使用它以及如何正确使用它。从我的阅读中,我的理解是持久性上下文的内容将与数据库同步,即发布未完成的语句或刷新实体数据。
现在,我得到下列设想两个实体A
和B
(在一比一的关系,而不是由JPA执行或模拟)。A
具有手动设置的复合PK,还具有自动生成的IDENTITY字段recordId
。这recordId
应B
作为的外键写入到实体A
。我要存钱,A
并且要B
进行一次交易。问题是自动生成的值A.recordId
是不是在事务内可用,除非我做的一个显式调用em.flush()
打完电话后em.persist()
上A
。(如果我有一个自动生成的IDENTITY PK,那么该值将直接在实体中更新,但是这里不是这种情况。)
可以em.flush()
在一个事务中使用时造成什么伤害?