使用 @SecondaryTables 注解实现一个类映射多个表
比如现有三个实体: Name , Address & Student:
Name:
@Entity
@Table(name="name")
public class Name implements Serializable {
@Id
@Column(name="id")
private int id;
@Column(name="name")
private String name;
public Name(){}
public Name(int id,String name){
this.id=id;
this.name=name;
}
//getters and setters
}
Address:
@Entity
@Table(name="address")
public class Address implements Serializable {
@Id
@Column(name="id")
private int id;
@Column(name="address")
private String address;
public Address(){}
public Address(int id, String address) {
super();
this.id = id;
this.address = address;
}
//getters and setters
}
Student:
@Entity
@Table(name="student")
@SecondaryTables({
@SecondaryTable(name="name", pkJoinColumns={
@PrimaryKeyJoinColumn(name="id", referencedColumnName="student_id") }),
@SecondaryTable(name="address", pkJoinColumns={
@PrimaryKeyJoinColumn(name="id", referencedColumnName="student_id") })
})
public class Student implements Serializable {
@Id
@Column(name="student_id")
private int studentId;
@Column(table="name")
private String name;
@Column(table="address")
private String address;
public Student(){}
public Student(int studentId){
this.studentId=studentId;
}
//getters and setters
}
Test:
Student s= new Student(1);
session.save(s);
Name n=new Name(s.getStudentId(),"Bilal Hasan");
session.save(n);
Address address = new Address(s.getStudentId(), "India");
session.save(address);
Student ob = (Student)session.get(Student.class, s.getStudentId());
System.out.println(ob.getStudentId());
System.out.println(ob.getName());
System.out.println(ob.getAddress());
输出:
1
Bilal Hasan
India
shareimprove this answer
edited Mar 27 '14 at 13:13
answered Mar 27 '14 at 13:06
Rembo
2,29911230