jpa单向多对多关联,无法插入中间表数据

时间:2021-01-12 21:38:58
如题,我现有两个实体,用户和角色。多对多关系。只有单方向根据用户查询角色需求,当我插入用户的时候,中间表中数据没有插入,很是郁闷,贴出代码
用户实体
public class SysUser(){
    @ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.MERGE}, fetch = FetchType.EAGER)
    @JoinTable(name = "sys_user_role", joinColumns = @JoinColumn(name = "n_userId"), inverseJoinColumns =    @JoinColumn(name = "n_roleId"))
    public List<SysRole> getRoles() {
return roles;
    }
}
角色实体中没有配置多对多关系。
下面是插入数据操作
SysRole role  = //从数据库中查询出角色对象
user.getRoles().add(role);//设置角色集合属性
session.save(user);

执行save方法后数据直插入到user表中,中间表中没有数据

2 个解决方案

#1


jpa单向多对多关联,无法插入中间表数据

#2


你可以将JoinTable中的joinColumns和inverseJoinColumns两个属性去掉试一下,JPA会自动去关联。

#1


jpa单向多对多关联,无法插入中间表数据

#2


你可以将JoinTable中的joinColumns和inverseJoinColumns两个属性去掉试一下,JPA会自动去关联。