cascade用于级联操作当前对象关联的对象
inverse="false"用于在操作当前对象时,将与其关联对象的关联关系见起来。
在多对多关系中的直白说法就是:
cascade用于在保存a时,将b也相应保存了
inverse用于在保存a时,将中间表的对应关系也维护了。
比如:student 跟 teacher是多对多的关系,他们的关心中间表为stu_teacher
那么在student的配置文件中做如下配置的话
- <bag name="teachers" table="stu_teach" cascade="all" inverse="false">
- <key column="stuID" />
- <many-to-many class="com.test.Teacher"
- column="teahID" />
- </bag>
表示,cascade保证了在修改删除Students实体时,也会相应的级联操作Teacher,比如新增了一个Student,并新增一个Teacher对象,将其设置为Student的teah属性上。那么在保存Student对象时,Teacher对象也会被保存到数据中。但中间表的关系并没有值。只有inverse="false"这句,会促使在保存Student时,将中间表的关系也维护起来。
cascade尽量只用在one-to-one或者one-to-many的映射关系里,详细原因可查看hibernate reference guide中“传播性持久化(transitive persistence)”中的讲解。