hibernate单向一对多级联操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate单向一对多级联操作相关的知识,希望对你有一定的参考价值。
主类 User 单方
从类 UserIp 多方要求结果:操作USER类,自动添加USERIP并维护关联关系
为了节省篇幅,忽略了get/set方法 请自行添加
User类代码:
public class User { /**用户的ID*/ /**登录用户名*/ /**IP集合*/ /**--------get/set----------*/ } |
UserIp类:
public class UserIp { /**--------get/set----------*/ } |
User.hbm.xml:
<hibernate-mapping> <class name="com.entity.User" table="user" lazy="false" dynamic-insert="true"> <id name="id" type="long" column="id"> <generator class="native" /> </id> <property name="username" column="username" /> <property name="password" column="password" /> <set name="userIps" table="user_has_ip" cascade="all-delete-orphan" lazy="false" inverse="false"> <key column="user_id" /><!-- 确定关联的外键列 --> <one-to-many class="com.entity.UserIp" /> </set> </class> </hibernate-mapping> |
UserIp.hbm.xml:
<hibernate-mapping> <class name="com.entity.UserIp" table="user_has_ip" lazy="false"> <id name="id" type="long" column="id"> <generator class="native" /> </id> <property name="ip" column="ip"/> </class> </hibernate-mapping> |
其中关键就在于
inverse="false" 控制反转,不增加这个参数的话,默认也为false,可以理解为true时,放弃级联关系维护权。
cascade="all-delete-orphan"
all-deleteorphan 的能力:
1. 当保存或更新父方对象时,级联保存或更新所有关联的子方对象,相当于 cascade 为 save-update
2. 当删除父方对象时,级联删除所有关联的子方对象,相当于 cascade 为 delete
3. 删除不再和父方对象关联的所有子方对
通过此设置,只需要操作User类,即可对UserIp类做增删改查关联关系维护等操作。。
以上是关于hibernate单向一对多级联操作的主要内容,如果未能解决你的问题,请参考以下文章