在网上看到好多方法,结果拿来用还是出现了一些问题。现在整理一下
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; } }