多对多单向:
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:
@Entitypublic 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; ???}}@Entitypublic 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:
@Entitypublic 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; ???}}@Entitypublic class Teacher implements Serializable{ ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???} ???????@ManyToMany(mappedBy="teachers") ???public Set<Student> getStus() { ???????return stus; ???}}
Hibernate映射关系配置(四)
原文地址:http://www.cnblogs.com/hyl-home/p/7576978.html