Hibernate inverse cascade ...
inverse:默认false,即该端负责维护关系。只能用在一对多和多对多双向关联映射上。
若某端配成inverse=true,则关系会在彼端被维护,对本端实体类的操作不会触发关系的更新。
举个例子,user和role,通过many-to-many来配置两者的多对多关系;user实体类中设置inverse为true,role端设置inverse为false(即:用户与角色间的关系由role来维护);这样,当删除某个被分配了角色的用户的时候,用户被删除,但该用户在USER_ROLE表中所对应用户角色关系信息不会被删除(因为用户端不负责维护关系);
这样,在你再次在权限管理模块中查看某角色下的“用户列表”时,就有可能报“No row with the given identifier exists”异常。
那咋样可以即让关系在Role端维护,又在删除某个已被赋予角色的用户后,在查看角色下“用户列表”时不至于报“No row with the given identifier exists”异常那?答案是在inverse为false(负责维护关系)的Role端的many-to-many标签上使用not-found:
<set name="users" table="T_USER_ROLE_REAL_AB" lazy="false"inverse="false" cascade="all"><key><column name="ROLE_ID" not-null="true" /></key><many-to-many column="USER_ID"outer-join="auto" not-found="ignore"/></set>