Hibernate持久化顺序

5

我有一个关于Hibernate持久化实体关系的问题。 假设我有一个实体A,它与实体B和实体C都有关系。 我创建了一个A实例,并用B和C的新实例填充它。当我持久化A时,我需要先持久化C再持久化B。有没有什么办法可以做到这一点?


为什么需要先持久化C再持久化B?如果B和C之间没有任何关系或约束,我不认为有任何好的理由依赖于特定的顺序。1.这将使代码极其脆弱(重构后就会出现问题)。2.这种行为可能与另一个JPA提供程序不同(据我所知,在JPA规范中没有关于此的说明,这是一项实现细节),依赖它将损害可移植性。 - Pascal Thivent
1个回答

1

不,你不能控制顺序。

唯一能做的就是在建立A-C关系后调用会话刷新,然后创建A-B关系。刷新将强制Hibernate将新数据推送到数据库,但不会提交事务。

刷新后,根据数据库配置,数据可能对其他事务可见或不可见(例如,在mysql上,有4种事务模式:http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接