问个hibernate级联删除的问题

ieo2004 2009-12-03 09:41:35
发信人: lzd82 (gogo), 信区: Java
标 题: 问个hibernate级联删除的问题
发信站: 水木社区 (Wed Dec 2 13:56:18 2009), 站内

简单的一对多双向关联,customer和order

配置文件相关信息如下:
customer.hbm.xml中
<set name="orders" cascade="delete" inverse="true">
<key column="CUSTOMER_ID" />
<one-to-many class="Order" />
</set>

order.hbm.xml中
<many-to-one
name="customer"
column="CUSTOMER_ID"
class="Customer"
not-null="true"
cascade="delete"
/>

应用代码:
加载一个customer,然后删除
Customer customer = (Customer) session.load(Customer.class, new Long(1));
session.delete(customer);

执行的sql语句是:
Hibernate: delete from orders where id=?
Hibernate: delete from orders where id=?
......
Hibernate: delete from customers where id=?

并不是期望中的
delete from orders where customer_id=?
delete from customers where id=?

请问是哪的配置问题吗?具体该如何配置呢?

...全文
126 点赞 收藏 10
写回复
10 条回复
rambosir 2009年12月20日
cascade="delete"


最好别用级联删除,他会删除你的关联对象。。
自己手动来吧
回复 点赞
islandrabbit 2009年12月19日
[Quote=引用 6 楼 warison2008 的回复:]
并不是期望中的
delete from orders where customer_id=?
delete from customers where id=?
改用hql实现

session.createQuery("delete from orders where customer = 1").exeupdate();
session.createQuery("delete from customers  where customerId = 1").exeupdate();
[/Quote]

session.createQuery("delete from orders where customer = 1").exeupdate();
是不是要改成:
session.createQuery("delete from orders where customer.id=1").exeupdate();
回复 点赞
islandrabbit 2009年12月19日
[Quote=引用 6 楼 warison2008 的回复:]
并不是期望中的
delete from orders where customer_id=?
delete from customers where id=?
改用hql实现

session.createQuery("delete from orders where customer = 1").exeupdate();
session.createQuery("delete from customers  where customerId = 1").exeupdate();
[/Quote]

顶!
回复 点赞
islandrabbit 2009年12月09日
学习学习!
回复 点赞
道光2008 2009年12月09日
并不是期望中的
delete from orders where customer_id=?
delete from customers where id=?
改用hql实现

session.createQuery("delete from orders where customer = 1").exeupdate();
session.createQuery("delete from customers where customerId = 1").exeupdate();
回复 点赞
羽蓝 2009年12月09日
配置文件里改为:inverse="false"
回复 点赞
kissclf 2009年12月09日
inverse="false"
回复 点赞
daihui05 2009年12月09日
这应该是一对多hibernate的级联删除,先查找出来
customer_id=? 的orders,再用orders的id删除
回复 点赞
ieo2004 2009年12月09日
没人回答啊
回复 点赞
youjianbo_han_87 2009年12月03日
估计和你配置没有问题,是 Hibernate实现的问题。
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告