2010-03-18 179 views
4

我有一个关于Hibernate如何持久化实体关系的问题。 比方说,我有一个实体A与实体B有关系,另一个实体与实体C有关系。我创建了一个A实例,并用B和C的新实例填充它。当我坚持AI时,需要C先前持久化B.有没有办法做到这一点?Hibernate持久化订单

非常感谢。

+0

为什么你需要在B之前坚持C?如果您在B和C之间没有任何关系或限制,我认为没有任何理由依赖特定的订单。 1.这会使代码非常脆弱(重构和BANG!)。 2.此行为可能与另一个JPA提供程序(AFAIK在JPA规范中没有任何关于此的内容有关,这是实现细节),并依赖它会损害可移植性。 – 2010-03-18 18:04:17

回答

1

不,您无法控制订单。

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

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