Hibernate映射關系配置(四)
阿新 • • 發佈:2017-09-22
rop app log () gets ati nts serializa bean
多對多單向:
Bean:
public class Student implements Serializable { private int id ; private String name ; private Set<Teacher> teachers ; .... } public class Teacher implements Serializable{ private int id ; private String name ; .... }
xml:
Student.hbm.xml:<class name = "Student"> <!-- id是來配置主鍵 name是類中的哪個屬性和主鍵映射 generator:表示主鍵的生成策略 --> <id name = "id"> <generator class="native" /> </id> <!-- property是用來把類中的屬性和表的字段做一一對應 --> <propertyname="name" /> <set name="teachers" table="t_s"> <!-- key 會在指定的表中新添加列,外鍵--> <key column="sid" /> <many-to-many class="Teacher" column="tid" /> </set> </class> Teacher.hbm.xml: <classname = "Teacher"> <!-- id是來配置主鍵 name是類中的哪個屬性和主鍵映射 generator:表示主鍵的生成策略 --> <id name = "id"> <generator class="native" /> </id> <property name="name" /> </class>
annotation:
@Entity public class Student implements Serializable { @Id @GeneratedValue public int getId() { return id; } /** * joinColumns 是指定第三張表中的哪個字段引用當前類對應的表的主鍵 * inverseJoinColumns 是指定第三張表中的哪個字段引用關聯的另一張表的主鍵 * @return */ @ManyToMany @JoinTable(name="ts",joinColumns={ @JoinColumn(name="sid") },inverseJoinColumns={ @JoinColumn(name="tid") }) public Set<Teacher> getTeachers() { return teachers; } } @Entity public class Teacher implements Serializable{ @Id @GeneratedValue public int getId() { return id; } }
多對多雙向:
Bean:
public class Student implements Serializable { private int id ; private String name ; private Set<Teacher> teachers ; .... } public class Teacher implements Serializable{ private int id ; private String name ; private Set<Student> stus ; .... }
Xml:
Student.hbm.xml: <class name = "Student"> <!-- id是來配置主鍵 name是類中的哪個屬性和主鍵映射 generator:表示主鍵的生成策略 --> <id name = "id"> <generator class="native" /> </id> <!-- property是用來把類中的屬性和表的字段做一一對應 --> <property name="name" /> <set name="teachers" table="t_s"> <!-- key 會在指定的表中新添加列,外鍵--> <key column="sid" /> <many-to-many class="Teacher" column="tid" /> </set> </class> Teacher.hbm.xml: <class name = "Teacher"> <!-- id是來配置主鍵 name是類中的哪個屬性和主鍵映射 generator:表示主鍵的生成策略 --> <id name = "id"> <generator class="native" /> </id> <property name="name" /> <set name="stus" table="t_s" cascade="all"> <key column="tid" /> <many-to-many column="sid" class="Student" /> </set> </class>
annotation:
@Entity public class Student implements Serializable { @Id @GeneratedValue public int getId() { return id; } /** * joinColumns 是指定第三張表中的哪個字段引用當前類對應的表的主鍵 * inverseJoinColumns 是指定第三張表中的哪個字段引用關聯的另一張表的主鍵 * @return */ @ManyToMany @JoinTable(name="ts",joinColumns={ @JoinColumn(name="sid") },inverseJoinColumns={ @JoinColumn(name="tid") }) public Set<Teacher> getTeachers() { return teachers; } } @Entity public class Teacher implements Serializable{ @Id @GeneratedValue public int getId() { return id; } @ManyToMany(mappedBy="teachers") public Set<Student> getStus() { return stus; } }
Hibernate映射關系配置(四)