注解 @JoinColums 的用法
package com.hibernate.entity;
import java.io.Serializable;
// 主键类
public class TeacherPK implements Serializable {
private static final long serialVersionUID = 6939546618791078447L;
private Long id;
private String name;
@Override
public boolean equals(Object obj) {
if (obj instanceof TeacherPK) {
TeacherPK teacherPK = (TeacherPK) obj;
if (this.id == teacherPK.getId() && this.name.equals(teacherPK.getName())) {
return true;
}
}
return false;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
package com.hibernate.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
// 教师类
@Entity
@Table(name = "t_teacher")
@IdClass(value = TeacherPK.class)
public class Teacher implements Serializable {
private static final long serialVersionUID = 3543286868313801941L;
@Id
private Long id;
@Id
private String name;
private String title;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public String getTitle() {
return title;
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setTitle(String title) {
this.title = title;
}
}
package com.hibernate.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
// 教师证实体类
@Entity
@Table(name = "t_teachercard")
public class TeacherCard implements Serializable {
private static final long serialVersionUID = -3211605077508265286L;
@Id
@GeneratedValue(generator = "teacherCard_GEN")
@GenericGenerator(name = "teacherCard_GEN", strategy = "uuid")
private String id;
@OneToOne(optional = true)
@JoinColumns(value = { @JoinColumn(name = "teacher_id", referencedColumnName = "id"), //
@JoinColumn(name = "teacher_name", referencedColumnName = "name") })
private Teacher teacher;
private String position;
public String getId() {
return id;
}
public String getPosition() {
return position;
}
public Teacher getTeacher() {
return teacher;
}
public void setId(String id) {
this.id = id;
}
public void setPosition(String position) {
this.position = position;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
}