发信人: 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=? 请问是哪的配置问题吗?具体该如何配置呢?
标 题: 问个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=? 请问是哪的配置问题吗?具体该如何配置呢?
customer_id=? 的orders,再用orders的id删除
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();
session.createQuery("delete from orders where customer = 1").exeupdate();
是不是要改成:
session.createQuery("delete from orders where customer.id=1").exeupdate();
最好别用级联删除,他会删除你的关联对象。。
自己手动来吧