hibernate:many-to-one中的cascade怎么用啊?

jbas 2006-10-23 01:09:20
各位好,
我现在有一个表,
mytab
code name parcode
1 a 2
2 b 2
3 c 1
4 e 2
其中parcode对应表中的code字段,表示对应的父类code,
我想用hibernate中的级联删除方法,
当我删除code=1这条记录时,自动把他的子记录和子子记录如code=3删除掉。
我的mytab.hmb.xml中是这样配置的,
<many-to-one
name="parent"
class="com.GroupPO"
cascade="delete"
outer-join="auto"
column="pcode"
/>
但是这样只会删除自己,不会级联删除的,请帮一下了!
谢谢!
...全文
927 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
esprit0318 2006-10-23
  • 打赏
  • 举报
回复
明白了
Marcus-Z 2006-10-23
  • 打赏
  • 举报
回复
shi de
esprit0318 2006-10-23
  • 打赏
  • 举报
回复
不行是什么意思?
不能删除关联表中的数据?
Marcus-Z 2006-10-23
  • 打赏
  • 举报
回复
楼上的你那种带HQL语句的删除方式是不行啊
esprit0318 2006-10-23
  • 打赏
  • 举报
回复
我的映射关系是:Room和User一对多
Room.hbm.xml:
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
<class name="com.reny.hibernate.one2many.bidirectional.Room" table="room">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="address" column="address" type="java.lang.String" />

<set name="users" table="t_user" cascade="delete" inverse="true">
<key column="room_id"/>
<one-to-many class="com.reny.hibernate.one2many.bidirectional.User"/>
</set>
</class>
</hibernate-mapping>

User.hbm.xml:
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
<class name="com.reny.hibernate.one2many.bidirectional.User" table="t_user">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" column="name" type="java.lang.String" />

<many-to-one name="room"
column="room_id"
class="com.reny.hibernate.one2many.bidirectional.Room"
cascade="delete"
outer-join="true"/>
</class>
</hibernate-mapping>
我一开始用:
Query query = session.createQuery("delete Room where id=1");
query.executeUpdate();来删除数据,发现只是Room表中删除了id为1的记录,user表中room_id为1的也没有删除掉
现在我用:
Room room = (Room)session.load(Room.class, new Integer(1));
session.delete(room);
这样来删,发现两个表中room id为1的都被删除了

难道用前一种方法来删除数据,它不会去删除关联表中的数据?
Marcus-Z 2006-10-23
  • 打赏
  • 举报
回复
你的parcode类里面定义了有parent和child的属性吗?那个级连的应该是其child属性,用<set..
esprit0318 2006-10-23
  • 打赏
  • 举报
回复
同问!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧