bob*_*rew 5 java many-to-many hibernate jointable
我们有以下两个具有多对多关联的实体:
@Entity
public class Role {
...
@ManyToMany
@JoinTable( name = "user_has_role", joinColumns = { @JoinColumn( name = "role_fk" ) }, inverseJoinColumns = { @JoinColumn( name = "user_fk" ) } )
private Set<User> userCollection;
...
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity
public class User {
...
//bi-directional many-to-many association to Role
@ManyToMany( mappedBy = "userCollection" )
private Set<Role> roleCollection;
...
}
Run Code Online (Sandbox Code Playgroud)
如果我们想要截断所有数据
em.createQuery( "DELETE Role" ).executeUpdate();
Run Code Online (Sandbox Code Playgroud)
我们必须清除"user_has_role"JoinTable中的所有关联,如下面的答案所示:
for ( ... )
{
A a = aDao.getObject(aId);
B b = bDao.getObject(bId);
b.getAs().remove(a);
a.getBs().remove(b);
bDao.saveObject(b);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法一次性删除JoinTable中的所有关联而不迭代所有数据?也许有一个特殊的HQL-Command之类的DELETE Role.user_has_role?
| 归档时间: |
|
| 查看次数: |
2660 次 |
| 最近记录: |