我有一個類Group
和類User
地方組和用戶很多一對多關係艦
如果我改變user
的groups
和保存user
我想更新groups
反之亦然其中,如果我改變了group
的user
並保存group
我想user
進行更新
我是否必須設置在兩個班mappedBy
注:我使用eclipseLink
如何讓多對多關係船舶的所有者?
2
A
回答
1
對於多對多關係,您需要更新雙方的關係數據以保持一致。
不幸的是沒有捷徑。
你可以做的是在任何一個實體或第三個類上創建一個方法來封裝一致的更新。
小心無限循環 - 不要在兩個實體類中實現傳播到其他實體。
大致是這樣的:
public class User
...
public void addGroup(Group g){
groups.add(g);
g.addUser(this);
}
或
public class Group
...
public void addUser(User u){
users.add(u);
u.addGroup(this);
}
我假設的適當級聯設置的關係註釋的存在。
0
擁有關係和雙向參考之間的差異。前者主要涉及數據庫的佈局,後者涉及您的應用程序邏輯。從你的問題,我認爲你想要後者。與此同時,通常建議只有關係的一方擁有的參考。您可以輕鬆創建一個雙向的參考,同時保持清晰的集所有者通過創建執行bidrection添加和刪除方法:
class Group {
@ManyToMany
private Collection<User> users = ... ;
public void addUser(User user) {
if(user != null && !users.contains(user)) {
users.add(user)
user.addGroup(this);
}
}
public void removeUser(User user) {
if(user != null && users.contains(user)) {
users.remove(user)
user.removeGroup(this);
}
}
}
class User {
@ManyToMany(mappedBy="users")
private Collection<Group> groups = ... ;
public void addGroup(Group group) {
if(group != null && !groups.contains(group)) {
groups.add(group)
group.addUser(this);
}
}
public void removeGroup(Group group) {
if(group != null && groups.contains(group)) {
groups.remove(group)
group.removeUser(this);
}
}
}
在這個例子中,Group
擁有的關係是什麼但是不會影響應用程序的邏輯。請注意操作順序以避免無限循環。另外,請注意,此代碼不是線程安全的。
相關問題
- 1. 對多對關係船舶應用過濾
- 2. 如何將工作分配給船舶作爲多對多關係
- 3. LINQ到1 SQL預先加載到許多和多對多的關係船舶
- 4. MongoID多對多關係船
- 5. odata 4多對多關係船
- 6. 基於表單的多選的多對多關係船
- 7. 選擇所有多對多的關係
- 8. 旋轉船舶360 *
- 9. 船舶Maven依賴
- 10. 多態關係 - 檢索所有者
- 11. SQL,許多得到的只是(一行)最近很多關於船舶
- 12. 多對多的關係 - 讓所有的對象鏈接到另外一個
- 13. Rails ActiveRecord - 如何確定多態關係中的所有者?
- 14. Symfony 2左加入多對多關係船得到InvalidPathExpression錯誤
- 15. 如何在關係數據庫中有多對多的關係
- 16. 關係有多對多關係
- 17. 的Sql發現歷時ID對一對多關係船
- 18. 戰鬥,船舶SQL查詢
- 19. Grails如何爲ownee創建所有者創建一對多關係的表單
- 20. Django的獲取對象的所有多對多關係
- 21. doctrine2 - 刪除所有一對多關係
- 22. 多對多關係與一對多關係有什麼區別?
- 23. Loopback:具有belongsTo關係的模型的多個所有者
- 24. 如何建模一個多一對多的關係,具有具有一對多的關係相關的軌道
- 25. 如何刪除多對多而不刪除關係中的所有對象?
- 26. Ebean和多對多的關係 - 如何?
- 27. 如何建立多對多的關係?
- 28. 如何編碼多對多的關係?
- 29. 如何構建多對多的關係
- 30. 如何查詢多對多的關係?