Hibernate5.2.4Final学习(四)联合主键

1.采用xml来设置联合主键
建立一个主键的PO类,并实现Serializable接口,并重写equals()和hashCode()方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.nick.testhibernate;
import java.io.Serializable;
import javax.persistence.Embeddable;
public class TeacherPK implements Serializable {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof TeacherPK){
TeacherPK pk = (TeacherPK)obj;
if(pk.getId()==this.id && this.name.equals(pk.getName())){
return true;
}
}
return false;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}

1
2
3
4
<composite-id name="pk" class="com.nick.testhibernate.StudentPK">
<key-property name="id"></key-property>
<key-property name="name"></key-property>
</composite-id>
  1. 注解的方式,分为三种:
  • 在组件类的前面加上@Embeddable,并在组件的get方法前加上@Id
  • 在组件的get方法前加上@EmbeddedId
  • 在主键的get方法前都加上@Id,最后在与数据库表对应的实体类的前面加上@IdClass(TeacherPK.class)
您的支持将是我前进的不懈动力