springboot JPA 联合主键

一、联合主键类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 }

 

posted @ 2020-10-05 11:13  遥~  阅读(1244)  评论(0编辑  收藏  举报