理解Hibernate中的Inverse属性
inverse常用于一对多双向关联关系中。
以Student(学生)和Class(班级)为例,它们之间的关系为一对多的关系,即一个学生只能属于一个班级,一个班级可以包含多个学生。
学生类定义代码:
Class Student{private int id;private String name;private Class class;//省略getter()和setter()方法}
Class Class{private int id;private String name;private Set students = new HashSet();//省略getter()和setter()方法}
<class name="Student" table="STUDENT"><id name="id" type="int" column="ID"><generator /> </id><property name="name" type="string" column="NAME" /><many-to-one name="class" column="CLASS_ID" cascade="save-update" /> </class>
<class name="Class" table="CLASS"><id name="id" type="int" column="ID"><generator /> </id><property name="name" type="string" column="NAME" /><set name="students" table="STUDENT" cascade="save-update" inverse="false"><key column="CLASS_ID" /><one-to-many /></set></class>
Class c1 = new Class();c1.setName("一班");Student s1 = new Student();Student s2 = new Student();s1.setName("Jason");s2.setName("Tom");c1.getStudents().add(s1);c2.getStudents().add(s2);s1.setClass(c1);s2.setClass(c1); //注释1session.save(c1);