gpt4 book ai didi

java - Hibernate ManyToMany 保存双方关系

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:30 26 4
gpt4 key购买 nike

我在用户和角色之间有一个多对多关系(成员是关系表)。我可以保存从角色到用户的关系,但不能保存用户到角色的关系。

用户.java

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "users")
public Set<Role> getRoles() {
return roles;
}

public void setRoles(Set<Role> roles) {
this.roles = roles;
}

角色.java

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "members", catalog = "blackant_db", joinColumns = { @JoinColumn(name = "user_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "role_id", nullable = false, updatable = false) })
public Set<User> getUsers() {
return this.users;
}

public void setUsers(Set<User> users) {
this.users = users;
}

当我将一组用户合并到一个角色中时,hibernate会保存关系,否则hibernate只会更新对象用户。例如:

角色服务

Role role = roleService.findById(1);
Set<User> currentUsers = role.getUsers();
roleDAO.clear();
currentUsers.addAll(users);
role.setUsers(currentUsers);
roleDAO.merge(role);
//This works, save the user relationship into table members

用户服务

User user = userService.findById(1);
Set<Role> currentRoles = user.getRoles();
userDAO.clear();
currentRoles.addAll(roles);
user.setUsers(currentUsers);
userDAO.merge(user);
//This doesn't work, only save the user

如何保存双方的用户/角色集?有什么建议吗?

最佳答案

你也尝试过在 User 中添加级联语句吗?

/** * (可选)必须级联到目标的操作 * 协会的。 * *

当目标集合是 {@link java.util.Map * java.util.Map},cascade元素适用于 * map 值。 * *

默认不进行级联操作。 */CascadeType[] Cascade() 默认 {};

关于java - Hibernate ManyToMany 保存双方关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26415231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com