hibernate 多对多 中间表不会更新? 5
Permision表:@ManyToMany(mappedBy="permisions",targetEntity=Role.class,cascade={Cascade...
Permision表:
@ManyToMany(mappedBy="permisions",targetEntity=Role.class,cascade={CascadeType.MERGE,CascadeType.PERSIST}, fetch=FetchType.EAGER)
@JoinTable(name="role_permision",joinColumns=@JoinColumn(name="permision_id"),inverseJoinColumns=@JoinColumn(name="role_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Role> getRoles() {
return roles;
}
role 表:
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE},targetEntity=User.class)
@JoinTable(name="user_role",joinColumns=@JoinColumn(name="role_id"),inverseJoinColumns=@JoinColumn(name="user_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<User> getUsers() {
return users;
}
当我修改permision所绑定的role时,中间表不会产生或更新数据,找了好久都没解决这个问题,希望哪位大侠 解答一下,谢谢
role表:
@ManyToMany(fetch=FetchType.EAGER,targetEntity=Permision.class)
@JoinTable(name="role_permision",joinColumns=@JoinColumn(name="role_id"),inverseJoinColumns=@JoinColumn(name="permision_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Permision> getPermisions() {
return permisions;
}
permission表:
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST},fetch=FetchType.EAGER,targetEntity=Role.class,mappedBy="permisions")
@JoinTable(name="role_permision",joinColumns=@JoinColumn(name="permision_id"),inverseJoinColumns=@JoinColumn(name="role_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Role> getRoles() {
return roles;
}
注意role 和permission表都需要配置targetEntity,mappedBy单方配置;配置mappedBy的表用于维护中间表 展开
@ManyToMany(mappedBy="permisions",targetEntity=Role.class,cascade={CascadeType.MERGE,CascadeType.PERSIST}, fetch=FetchType.EAGER)
@JoinTable(name="role_permision",joinColumns=@JoinColumn(name="permision_id"),inverseJoinColumns=@JoinColumn(name="role_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Role> getRoles() {
return roles;
}
role 表:
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE},targetEntity=User.class)
@JoinTable(name="user_role",joinColumns=@JoinColumn(name="role_id"),inverseJoinColumns=@JoinColumn(name="user_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<User> getUsers() {
return users;
}
当我修改permision所绑定的role时,中间表不会产生或更新数据,找了好久都没解决这个问题,希望哪位大侠 解答一下,谢谢
role表:
@ManyToMany(fetch=FetchType.EAGER,targetEntity=Permision.class)
@JoinTable(name="role_permision",joinColumns=@JoinColumn(name="role_id"),inverseJoinColumns=@JoinColumn(name="permision_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Permision> getPermisions() {
return permisions;
}
permission表:
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST},fetch=FetchType.EAGER,targetEntity=Role.class,mappedBy="permisions")
@JoinTable(name="role_permision",joinColumns=@JoinColumn(name="permision_id"),inverseJoinColumns=@JoinColumn(name="role_id"))
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Role> getRoles() {
return roles;
}
注意role 和permission表都需要配置targetEntity,mappedBy单方配置;配置mappedBy的表用于维护中间表 展开
3个回答
展开全部
中间表只是维护关系,我看你的描述意思是:你修改了role的基本信息,但是关系表中的数据没有改变?你是说这个意思吗?如果是这样的话,你修改role那么只是对role做了修改操作,没有影响到和permision的关系。
如果我说的问题不是你所说的,请你描述一下,最好把你修改时维护关系的代码(对role保存前关系处理的那段)贴一下。
如果我说的问题不是你所说的,请你描述一下,最好把你修改时维护关系的代码(对role保存前关系处理的那段)贴一下。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
joinColumns=@JoinColumn(name="permision_id",referencedColumnName="id")
加上referencedColumnName这个属性
inverseJoinColumns是中间表跟关系被维护端的外键映射信息;referencedColumnName是为了明确中间表中的外键字段跟被维护端的某字段关联
加上referencedColumnName这个属性
inverseJoinColumns是中间表跟关系被维护端的外键映射信息;referencedColumnName是为了明确中间表中的外键字段跟被维护端的某字段关联
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询