天天看點

Hibernate關系映射(10)_多對多單向關聯

一.Annotation方式:

  

 Teacher與Student是多對多的關系。在Teacher持有Student的引用

    /*

* Teacher.java

*/

@Entity

public class Teacher {

private int id;

private String name;

private Set<Student> students = new HashSet<Student>();

@ManyToMany

@JoinTable(name="t_s",

joinColumns=@JoinColumn(name="teacher_id"), //指向teacher表的id

inverseJoinColumns=@JoinColumn(name="student_id") //指向student表的id

)

public Set<Student> getStudents() {

return students;

}

public void setStudents(Set<Student> students) {

this.students = students;

}

@Id

@GeneratedValue

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

/*

* Student.java

*/

@Entity

public class Student {

private int id;

private String name;

@Id

@GeneratedValue

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

二.XML方式:(以上程式去掉注解)

在Teacher.hbm.xml中配置映射關系:

<hibernate-mapping>

<class name="com.szy.hibernate.model.Teacher">

<id name="id">

<generator class="native"></generator>

</id>

<property name="name"></property>

<set name="students" table="t_s">

<key column="teacher_id"></key>

<many-to-many class="com.szy.hibernate.model.Student" column="student_id"/>

</set>

</class>

</hibernate-mapping>

在Student.hbm.xml中配置映射關系:

<hibernate-mapping>

<class name="com.szy.hibernate.model.Student">

<id name="id">

<generator class="native"></generator>

</id>

<property name="name"></property>

</class>

</hibernate-mapping>