[英]Hibernate Many-to-Many relation
我正在嘗試使用Hibernate和MySQL DB實現多對多關系。 我有班級用戶:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "users_nodes",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "node_id")})
private List<Node> nodeList;
和類節點:
@ManyToMany(mappedBy = "nodeList", cascade = CascadeType.ALL)
private List<User> users;
當我嘗試將新節點保存到數據庫(已經有用戶)時,它成功將新實體添加到“節點”表中,但是關系表“ users_nodes”為空。
這是我保存Node實體的方式:
@Override @Transactional
public void persist(Node entity) {
getCurrentSession().save(entity);
}
謝謝你的幫助!
您必須更新關聯的所有者端( User.nodeList
),這意味着必須將User
與每個關聯用戶的Node
關聯。 例如:
class Node {
...
public void addUser(User user) {
if (!users.contains(user)) {
users.add(user);
user.addNode(this);
}
}
}
class User {
...
public void addNode(Node node) {
if (!nodeList.contains(node)) {
nodeList.add(node);
node.addUser(this);
}
}
}
如果這是一個性能問題(如果User
的Nodes
很多,那么在將新節點與所需用戶相關聯時將它們全部加載會很昂貴),則可以更改映射,以使Node
是該關聯的所有者和/或者您可以考慮此處介紹的其他選項和改進。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.