问个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=?

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

...全文
153 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
学习学习!
烟雨鹏城 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实现的问题。

67,550

社区成员

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

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