多对多单向:
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是用来把类中的属性和表的字段做一一对应 --> <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" /> </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; } }