2010-03-18 101 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),其他交易可能會或可能不會看到數據。