关于hibernate的many to many(由one to many 与 many to one组成) 关系
例如, 用户(User),角色(Role),以及用户—角色表(UserRole)这三张表
具体的po对应如下:
[code="java"]
package frery;
import java.util.HashSet;
import java.util.Set;
public class User implements java.io.Serializable {
private Integer uid;
private String uname;
private Set userroles = new HashSet(0);
public User() {
}
public User(Integer uid) {
this.uid = uid;
}
public User(Integer uid, String uname, Set userroles) {
this.uid = uid;
this.uname = uname;
this.userroles = userroles;
}
public Integer getUid() {
return this.uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return this.uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Set getUserroles() {
return this.userroles;
}
public void setUserroles(Set userroles) {
this.userroles = userroles;
}
}
package frery;
import java.util.HashSet;
import java.util.Set;
public class Role implements java.io.Serializable {
private Integer rid;
private String rname;
private Set userroles = new HashSet(0);
public Role() {
}
public Role(Integer rid) {
this.rid = rid;
}
public Role(Integer rid, String rname, Set userroles) {
this.rid = rid;
this.rname = rname;
this.userroles = userroles;
}
public Integer getRid() {
return this.rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public String getRname() {
return this.rname;
}
public void setRname(String rname) {
this.rname = rname;
}
public Set getUserroles() {
return this.userroles;
}
public void setUserroles(Set userroles) {
this.userroles = userroles;
}
}
package frery;
public class Userrole implements java.io.Serializable {
private Integer urid;
private Role role;
private User user;
public Userrole() {
}
public Userrole(Integer urid) {
this.urid = urid;
}
public Userrole(Integer urid, Role role, User user) {
this.urid = urid;
this.role = role;
this.user = user;
}
public Integer getUrid() {
return this.urid;
}
public void setUrid(Integer urid) {
this.urid = urid;
}
public Role getRole() {
return this.role;
}
public void setRole(Role role) {
this.role = role;
}
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
}
[/code]
我想通过对UserRole的持久化对象进行更新两者的关系
如 User user = userDao.getUserById(1) ;
Role role = roleDao.getRoleById(2) ;
Userrole userRole = new Userrole() ;
userRole.setUser(user) ;
userRole.setRole(role) ;
userroleDao.saveOrUpdate(userRole) ;
userroleDao.saveOrUpdate(userRole) ; //在这里我调用了两次saveOrUpdate,如何保证这条重复记录不被插入呢?