Hibernate 休眠保持顺序

Hibernate 休眠保持顺序,hibernate,Hibernate,我有一个关于Hibernate如何保持实体关系的问题。 假设我有一个实体A与实体B有关系,另一个与实体C有关系。 我创建了一个A实例,并用B和C的新实例填充它。当我持久化A时,我需要将C持久化到B之前。有什么方法可以做到这一点吗?没有,您无法控制顺序 唯一可以做的事情是在建立A-C关系后调用会话刷新,然后创建A-B关系。刷新将强制hibernate将新数据推送到数据库,但不会提交事务 刷新后,数据可能对其他事务可见,也可能对其他事务不可见,这取决于数据库配置(例如,在mysql上,有4种事务模式

我有一个关于Hibernate如何保持实体关系的问题。 假设我有一个实体A与实体B有关系,另一个与实体C有关系。
我创建了一个A实例,并用B和C的新实例填充它。当我持久化A时,我需要将C持久化到B之前。有什么方法可以做到这一点吗?

没有,您无法控制顺序

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


刷新后,数据可能对其他事务可见,也可能对其他事务不可见,这取决于数据库配置(例如,在mysql上,有4种事务模式:)。

为什么需要先保存C,然后保存B?如果你在B和C之间没有任何关系或约束,我看不出有什么好的理由依赖于特定的顺序。1.这将使代码非常脆弱(重构和爆炸!)。2.这种行为可能与另一个JPA提供者不同(AFAIK,JPA规范中对此没有任何规定,这是一个实现细节),依赖它会损害可移植性。