hibernate 多对多关系
2.多对多(举例学生Student与老师Teacher)
public class Student {
private Integer sid;
private String sname;
private Set<Teacher> teachers=new HashSet<Teacher>();
}
public class Teacher {
private Integer tid;
private String tname;
private Set<Student> students=new HashSet<Student>();
}
在实体类的映射文件中
<!--Student-->
<hibernate-mapping>
<class name="com.d.entity.Student" table="STUDENT">
<id name="sid" type="java.lang.Integer">
<column name="SID" />
<generator class="native" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" />
</property>
<!--配置多对多-->
<set name="teachers" table="stu_tea">
<key>
<column name="SID" />
</key>
<many-to-many class="com.d.entity.Teacher" column="rid"> </many-to-many>
</set>
</class>
</hibernate-mapping>
<!--Teacher-->
<hibernate-mapping>
<class name="com.d.entity.Teacher" table="TEACHER">
<id name="tid" type="java.lang.Integer">
<column name="TID" />
<generator class="native" />
</id>
<property name="tname" type="java.lang.String">
<column name="TNAME" />
</property>
<!--配置多对多-->
<set name="students" table="stu_tea" inverse="true" cascade="all">
<key>
<column name="TID" />
</key>
<many-to-many class="com.d.entity.Student" column="sid"></many-to-many>
</set>
</class>
</hibernate-mapping>
测试
public class TestCRUD {
private Configuration c;
private SessionFactory s;
private Session session;
private Transaction t;
@Before
public void befor() {
c = new Configuration().configure();
s = c.buildSessionFactory();
session = s.openSession();
t = session.beginTransaction();
}
@Test
public void test() {
System.out.println("进来了");
}
@After
public void after() {
t.commit();
session.close();
}
}