Hibernate级联操作-cascade属性

Hibernte中级联操作cascade属性选项:

1. none :默认值,在保存、更新或删除对象时,忽略其他关联的对象 。

2. save-update :当通过 Sessionsave()update() 以及 saveOrUpdate() 方法保

    存或更新当前对象时,级联保存所有关联的新建的临时对象,并且级联更新所有关联

    的游离对象。

3. delete :当通过 Sessiondelete() 方法删除当前的对象是,级联删除所有关联的

    对象。

4. all :包含 save-update 以及 delete 的行为。同事,对当前对象执行 evict()lock()

    操作时,也会对所有关联的持久对象执行 evict() lock() 操作。

5. delete-orphan :删除所有和当前对象解除关联关系的对象。

6. all-delete-orphan :包含 all delete-ophan行为

7. 特例: Session 对象调用 delete() 方法

   级联操作时, 设置 <set cascade=”delete”> ,例删除图书的一个分类:

   Category c = new Category();

   c.setId(11);

   session.delete(c);

   结果删除失败,原因:删除操作没有放在一个事务里面。

   Transaction tran = session.beginTransaction();

   Category c = new Category();

   c.setId(11);

   session.delete(c);

   tran.commit();

   加了事务后,能够删除分类表的数据了。但是对应此分类的图书的数据却只是将关联

   的分类 ID 修改为了 null, 并没有真正删除。原因:这里的 Category 对象只是一个临时对

   象。它在删除之前会被持久化,但它所关联的图书对象却不会被自动持久化。

   Transaction tran = session.beginTransaction();

   Category c = (Category) session.get(Category.class, 11);

   session.delete(c);

   tran.commit();

   级联删除成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值