关于Hibernate级联删除的问题

开发 后端
Hibernate级联删除,tenyo ,删除某一条数据,则其子表的所有级联数据全部自动删除。这样的需求在Hibernate里可以使用cascade简单地加以实现。本文将就Hibernate级联删除的问题举例进行说明。

Hibernate级联删除,tenyo ,删除某一条数据,则其子表的所有级联数据全部自动删除。这样的需求在Hibernate里可以使用cascade简单地加以实现。下面就Hibernate级联删除的问题举例进行说明。

比如有下面四个表:

  1. A(id, name)   
  2. AA(id, name, a_id)   
  3. B(id, name, a_id)   
  4. BB(id, name, b_id)  

假设它们之间的关系是:

  1. A:AA=one-to-many   
  2. A:B=one-to-one(外键定义one-to-one关系)   
  3. B:BBone-to-many  

A.hbm.xml

  1. …   
  2. <set name="aaSet" lazy="true" inverse="true"   
  3.         cascade="all-delete-orphan">   
  4.     <key column="A_ID" not-null="true" />   
  5.     <one-to-many class="AA" />   
  6. </set>   
  7. <one-to-one name="b"   
  8.     class="B"   
  9.     property-ref="aid"></one-to-one>   
  10. …  

B.hbm.xml

  1. <set name="bbSet" lazy="true" inverse="true"   
  2.         cascade="all-delete-orphan" >   
  3.     <key column="B_ID" not-null="true" />   
  4.     <one-to-many class="BB" />   
  5. </set>  

代码:

  1. a = …;   
  2. session.getTransaction().begin();   
  3. session.delete(a);   
  4. session.getTransaction().commit();  

这样,就会把AA,B,BB里相关数据自动删除。

说明:
 
设置Hibernate级联删除,只需:
 
1.在父端的one-to-one/many-to-one关系:设置cascade=”delete”或cascade=”all”。

2.在父端的one-to-many关系(map, set, list, bag):设置cascade=”all-delete-orphan”或cascade=”all”。
即可。

 

【编辑推荐】

  1. 初学者适用的Hibernate学习方法
  2. Hibernate实战(第2版)读书笔记
  3. Hibernate一对多关系的处理
  4. 十五道Hibernate面试题及答案
  5. Hibernate的性能优化
责任编辑:仲衡 来源: JavaEye技术网站
相关推荐

2009-06-04 10:58:15

strutshibernate分页

2009-09-27 10:10:47

Hibernate处理

2010-10-22 17:33:02

2010-07-15 10:48:48

SQL Server2

2010-09-02 09:45:07

SQL删除

2010-11-10 11:47:35

SQL Server级

2014-05-06 09:44:54

MySQL LogsMySQL

2009-06-02 17:18:10

hibernate框架简介

2009-09-15 14:52:15

linq级联删除

2009-06-03 10:02:53

Hibernate批量删除

2010-11-10 11:51:04

SQL SERVER级

2009-06-02 15:30:35

Hibernate面试笔试题

2009-09-24 13:45:53

Hibernate性能

2010-04-23 15:44:29

Oracle 外键

2009-07-15 09:30:00

ibatis级联

2011-09-13 10:25:05

数据库点滴

2010-09-01 16:40:00

SQL删除触发器

2011-03-22 12:59:18

SQLOracle外键约束

2009-06-17 11:47:21

Hibernate 删

2010-05-25 15:32:39

MySQL 中文问题
点赞
收藏

51CTO技术栈公众号