【发布时间】:2014-08-20 20:19:28
【问题描述】:
我想查询两个使用休眠的内连接连接的表。
两张表如下。
创建表systemuser (
system_user_id INT(20) NOT NULL AUTO_INCREMENT,
user_name VARCHAR(50) NOT NULL DEFAULT '0',
主键 (system_user_id)
)
创建表role (
system_user_id INT(20) 非空,
role_id INT(20) NOT NULL DEFAULT '0',
主键 (system_user_id,role_id),
约束 FK_SYSTEM_USER_ID 外键 (system_user_id) 参考 systemuser (system_user_id)
)
这两个表是一对多的关系。
这些 tow 的 Bean 类如下。
@Entity(name = "role")
@IdClass(RoleCompositeKey.class)
public class Role extends implements java.io.Serializable {
private int roleId =0;
private int systemUserId =0;
private SystemUser systemUser;
public Role(){
}
public void setRoleId(int roleId){
this.roleId = roleId;
}
@Id
@Column(name = "role_Id")
public int getRoleId(){
return roleId;
}
public void setSystemUserId(int systemUserId){
this.systemUserId = systemUserId;
}
@Id
@Column(name="system_user_id")
public int getSystemUserId(){
return systemUserId;
}
public void setSystemUser(SystemUser systemUser){
this.systemUser= systemUser;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "system_user_id", nullable = false)
public SystemUser getSystemUser(){
return systemUser;
}
}
@Entity
@Table(name = "systemuser",uniqueConstraints = {
@UniqueConstraint(columnNames = "system_user_id"),
@UniqueConstraint(columnNames = "user_name") })
public class SystemUser {
private int systemUserId = 0;
private String userName = null;
private Set<Role> roleList;
public SystemUser(){
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name = "user_name")
public String getUserName() {
return userName;
}
public void setSystemUserId(int systemUserId){
this.systemUserId = systemUserId;
}
@Id
@Column(name="system_user_id")
public int getSystemUserId(){
return systemUserId;
}
public void setRole(Set<Role> roleList){
this.roleList = roleList;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "systemUser")
public Set<Role> getRole(){
return roleList;
}
}
但我收到一个错误提示
"........构造函数抛出异常;嵌套异常是 org.hibernate.MappingException:实体映射中的重复列:....beans.Role 列:system_user_id(应该使用 insert=" 映射假“更新=“假”)“
请问有人可以帮我吗?非常感谢任何帮助!
提前致谢!
【问题讨论】: