首页 > 代码库 > hibernate联合主键注解配置

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;    }}

 

hibernate联合主键注解配置