我正在與一些不尋常的實體關係的項目工作,我遇到了JPA持續存在的問題。有兩個相關的對象;用戶並讓我們把其他X用戶有一個一對多和兩個一到一個關係到X.它basicly看起來像這樣複雜的JPA持續訂單問題
[User實體]
@OneToMany(mappedBy="user", cascade=CascadeType.ALL, orphanRemoval=true)
private List<X> xList;
@OneToOne
@JoinColumn(name = "active_x1_id")
private X activeX1;
@OneToOne
@JoinColumn(name = "active_x2_id")
private X activeX2;
[X實體]
@ManyToOne()
@JoinColumn(name="user_id")
private User user;
當堅持一個新的用戶,我也想在一個事務中堅持兩個X實體(一個用於activeX1,一個用於activeX2)。 Jpa處理這個奇怪的事情,日誌看起來像這樣:
INSERT INTO X VALUES (...) // x1
INSERT INTO USERS VALUES (...)
INSERT INTO X() VALUES (...) // x2
UPDATE USERS SET ...
UPDATE X VALUES (...) // updates x1
這使得不可能在數據庫中使用NOT NULL約束。有沒有更好的方法來處理這些多重關係?或者一種方法來控制JPA堅持對象的順序?在這個操作中,JPA確實似乎明確地試圖對付我。任何幫助,將不勝感激。
不是null你是什麼意思「JPA處理這個問題有點怪」?您正在使用JPA的特定實現... Hibernate?的EclipseLink?它是*執行*正在做你說的。這並不意味着所有的JPA實現都會這樣做 – DataNucleus 2010-12-17 18:46:30
你是對的,我的意思是EclipseLink。 – 2010-12-20 07:51:33