关于hibernate多对多级联删除的问题,请教各位大神,有代码
我用的是hibernate和struts2框架,具体代码如下:图一(产品包映射文件):图二(产品映射文件):图三:(删除产品包的dao方法)publicintDelete...
我用的是hibernate和struts2框架,具体代码如下:
图一(产品包映射文件):
图二(产品映射文件):
图三:(删除产品包的dao方法)
public int Deleteproductbag(ProductBag pb) {
Session session = HibernateUtil.getSessionFactory().openSession();
String hql = "delete ProductBag b where b.pbid=?";
Transaction tx = session.beginTransaction();
Query query = session.createQuery(hql);
query.setInteger(0, pb.getPbid());
int n = query.executeUpdate();
tx.commit();
session.close();
return n;
}
图4(产品包的action中的方法)
我想问的是:我现在想删除产品包的一方,但是不删除产品,应该怎么实现,我的映射配置文件应该需要修改什么?DAO中的删除方法要如何修改,action这样写可以实现效果吗,我试过在配置文件添加 inverse="false", cascade="save-update但是回报错误:org.hibernate.exception.ConstraintViolationException: could not execute update query
请各位大哥大姐们帮忙解决下,小弟JAVA刚学不久,求赐教,分数不够,还请大家见谅 展开
图一(产品包映射文件):
图二(产品映射文件):
图三:(删除产品包的dao方法)
public int Deleteproductbag(ProductBag pb) {
Session session = HibernateUtil.getSessionFactory().openSession();
String hql = "delete ProductBag b where b.pbid=?";
Transaction tx = session.beginTransaction();
Query query = session.createQuery(hql);
query.setInteger(0, pb.getPbid());
int n = query.executeUpdate();
tx.commit();
session.close();
return n;
}
图4(产品包的action中的方法)
我想问的是:我现在想删除产品包的一方,但是不删除产品,应该怎么实现,我的映射配置文件应该需要修改什么?DAO中的删除方法要如何修改,action这样写可以实现效果吗,我试过在配置文件添加 inverse="false", cascade="save-update但是回报错误:org.hibernate.exception.ConstraintViolationException: could not execute update query
请各位大哥大姐们帮忙解决下,小弟JAVA刚学不久,求赐教,分数不够,还请大家见谅 展开
2个回答
2013-07-03 · 知道合伙人软件行家
关注
展开全部
额 你想不删除 直接设置none得了...,这个你执行报错 说明你bean对象的关联关系有问题 你那样配 也能符合你的要求 但你别的地方有问题 把你的错误提示 百度一下改改就好了
1.级联是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作;
2.级联配置通过many-to-one的cascade属性实现;
3.cascade属性有四种取值:
all:所有操作都执行级联操作;
none:所有操作都不执行级联操作;
save-update:保存和更新时执行级联操作;
delete:删除时执行级联操作;
4.通过级联操作可以解决持久化对象不能直接引用瞬时对象的问题。
1.级联是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作;
2.级联配置通过many-to-one的cascade属性实现;
3.cascade属性有四种取值:
all:所有操作都执行级联操作;
none:所有操作都不执行级联操作;
save-update:保存和更新时执行级联操作;
delete:删除时执行级联操作;
4.通过级联操作可以解决持久化对象不能直接引用瞬时对象的问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询