一、联合主键类JPA规范
1、必须提供一个public的无参数构造函数;
2、必须实现序列化接口;
3、必须重写hashCode()和equals()这两个方法。这两个方法应该采用复合主键的字段作为判断这个对象是否相等的;
4、联合主键类的类名结尾一般要加上PK两个字母代表一个主键类,不是要求而是一种命名风格;
5、getter、setter etc
1 package com.DotSDot.pojo; 2 3 import java.io.Serializable; 4 import java.util.Objects; 5 6 /** 7 * @author Predator 8 * @create 2020-10-05-10:18 AM 9 */ 10 public class RolePermissionInformationPK implements Serializable { 11 private String role_id; 12 private String permission_id; 13 14 public RolePermissionInformationPK() { 15 } 16 17 public RolePermissionInformationPK(String role_id, String permission_id) { 18 this.role_id = role_id; 19 this.permission_id = permission_id; 20 } 21 22 @Override 23 public boolean equals(Object o) { 24 if (this == o) return true; 25 if (o == null || getClass() != o.getClass()) return false; 26 RolePermissionInformationPK that = (RolePermissionInformationPK) o; 27 return Objects.equals(role_id, that.role_id) && 28 Objects.equals(permission_id, that.permission_id); 29 } 30 31 @Override 32 public int hashCode() { 33 return Objects.hash(role_id, permission_id); 34 } 35 36 public String getRole_id() { 37 return role_id; 38 } 39 40 public void setRole_id(String role_id) { 41 this.role_id = role_id; 42 } 43 44 public String getPermission_id() { 45 return permission_id; 46 } 47 48 public void setPermission_id(String permission_id) { 49 this.permission_id = permission_id; 50 } 51 }
二、实体类
1、@IdClass(PK.class)
2、@Id
1 package com.DotSDot.pojo; 2 3 import javax.persistence.*; 4 import java.io.Serializable; 5 6 /** 7 * @author Predator 8 * @create 2020-10-05-8:46 AM 9 */ 10 @Entity 11 @Table(name = "tb_role_permissioninformation") 12 @IdClass(RolePermissionInformationPK.class) 13 public class RolePermissionInformation implements Serializable { 14 @Id 15 private String role_id; 16 @Id 17 private String permission_id; 18 19 public String getRole_id() { 20 return role_id; 21 } 22 23 public void setRole_id(String role_id) { 24 this.role_id = role_id; 25 } 26 27 public String getPermission_id() { 28 return permission_id; 29 } 30 31 public void setPermission_id(String permission_id) { 32 this.permission_id = permission_id; 33 } 34 35 public RolePermissionInformation() { 36 } 37 38 public RolePermissionInformation(String role_id, String permission_id) { 39 this.role_id = role_id; 40 this.permission_id = permission_id; 41 } 42 }