Hibernate中使用Annotation设置联合主键
在Hibernate中,有3中方法可以设置联合主键
1:使用Embeddable
此方法是在主键类前加入@Embeddable
然后在主键类对象的get方法上加入@Id即可
示例:
//此类为Teacher的主键类package com.freedom.pk;import java.io.Serializable;import javax.persistence.Embeddable;@Embeddablepublic class Teacher_PK 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;}}
package com.freedom.model;import javax.persistence.Entity;import javax.persistence.Id;import com.freedom.pk.Teacher_PK;@Entitypublic class Teacher {private Teacher_PK teacher_PK;@Idpublic Teacher_PK getTeacher_PK() {return teacher_PK;}public void setTeacher_PK(Teacher_PK teacher_PK) {this.teacher_PK = teacher_PK;}private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
package com.freedom.pk;import java.io.Serializable;public class Teacher_PK 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;}}
package com.freedom.model;import javax.persistence.EmbeddedId;import javax.persistence.Entity;import com.freedom.pk.Teacher_PK;@Entitypublic class Teacher {private Teacher_PK teacher_PK;private int age;@EmbeddedIdpublic Teacher_PK getTeacher_PK() {return teacher_PK;}public void setTeacher_PK(Teacher_PK teacher_PK) {this.teacher_PK = teacher_PK;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
package com.freedom.pk;import java.io.Serializable;public class Teacher_PK 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;}}
package com.freedom.model;import javax.persistence.EmbeddedId;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.IdClass;import com.freedom.pk.Teacher_PK;@Entity@IdClass(Teacher_PK.class)public class Teacher {private int id;private String name;private int age;@Idpublic int getId() {return id;}public void setId(int id) {this.id = id;}@Idpublic String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}