hibernate--一对一联合主键外键关联

xiaoxiao2021-02-28  63

annotation注解开发:

以person 和 personID为例:

Person.java:

package com.bean; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.OneToOne; @Entity @IdClass(value=PersonPK.class) public class Person { private int id; private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } @Id public String getName() { return name; } public void setName(String name) { this.name = name; } } PersonPK.java:(联合主键类) package com.bean; import java.io.Serializable; public class PersonPK 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 int hashCode() { return this.name.hashCode(); } @Override public boolean equals(Object obj) { if(obj instanceof PersonPK){ PersonPK personPK = (PersonPK)obj; if(this.id == personPK.id && this.name.equals(personPK.name)){ return true; } } return false; } } PersonID.java:

package com.bean; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.OneToOne; @Entity public class PersonID { private int id; private String name; Person person; @Id 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; } @OneToOne @JoinColumns( //自定义数据库中字段名称 { @JoinColumn(name="WifeId",referencedColumnName="id"), @JoinColumn(name="wifeName",referencedColumnName="name") } ) public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } }

转载请注明原文地址: https://www.6miu.com/read-21060.html

最新回复(0)