hibernate联合主键注解配置

时间:2023-03-09 18:04:55
hibernate联合主键注解配置

在网上看到好多方法,结果拿来用还是出现了一些问题。现在整理一下

1、主键类

import javax.persistence.Column;

public class UserRoleUionPK implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
private String roleId; /*public UserRoleUionPK() {
super();
} public UserRoleUionPK(String userId, String roleId) {
this.userId = userId;
this.roleId = roleId;
}*/
@Column(name="user_id")
public String getUserId() {
return userId;
} public void setUserId(String userId) {
this.userId = userId;
}
@Column(name="role_id")
public String getRoleId() {
return roleId;
} public void setRoleId(String roleId) {
this.roleId = roleId;
}
/* @Override
public boolean equals(Object o) {
if(o instanceof UserRoleUionPK){
UserRoleUionPK key = (UserRoleUionPK)o ;
if(this.getUserId().equals(key.getUserId()) && this.getRoleId().equals(key.getRoleId())){
return true ;
}
}
return false ;
} @Override
public int hashCode() {
return this.roleId.hashCode()+this.userId.hashCode();
} */
}

网上有的说必须重写equals和hashcode,还有带参构造和无参构造,其实不然,我在项目中将其注释掉没有发现问题。

我这边主要注重的一点是@Column注解,之前没有加入@Colunm一直报列名无效的问题。

entity类

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table; @Entity
@Table(name = "sys_user_role")
public class SysUserRole implements java.io.Serializable { private UserRoleUionPK uionPK; @EmbeddedId
public UserRoleUionPK getUionPK() {
return uionPK;
} public void setUionPK(UserRoleUionPK uionPK) {
this.uionPK = uionPK;
} }

2、主键类

import javax.persistence.Column;

public class UserRoleUionPK implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
private String roleId; @Column(name = "user_id")
public String getUserId() {
return userId;
} public void setUserId(String userId) {
this.userId = userId;
} @Column(name = "role_id")
public String getRoleId() {
return roleId;
} public void setRoleId(String roleId) {
this.roleId = roleId;
} }

entity类

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table; @Entity
@Table(name = "sys_user_role")
@IdClass(UserRoleUionPK.class)
public class SysUserRole implements java.io.Serializable { private String userId;
private String roleId;
@Id
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Id
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
} }