hibernate里面发了update语句但是数据库就是不更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate里面发了update语句但是数据库就是不更新相关的知识,希望对你有一定的参考价值。

Hibernate: update FFCONFIGURE set CONFIGUREVALUE=? where CONFIGUREID=?
这个语句已经发出去了,但是数据库就是没能更新请问是怎么回事啊?

代码

public void updateParameter(final String configureid, final String configurevalue) throws Exception
getHibernateTemplate().execute(new HibernateCallback()
public Object doInHibernate(Session session)
throws HibernateException
String hql = "UPDATE Ffconfigure SET configurevalue=? WHERE configureid=?";
Query q = session.createQuery(hql);
q.setString(0, configureid);
q.setString(1, configurevalue);
q.executeUpdate();
return null;

);

参考技术A 你没有启动事务

要改成这样就行了

public void updateParameter(final String configureid, final String configurevalue) throws Exception
getHibernateTemplate().execute(new HibernateCallback()
public Object doInHibernate(Session session)
throws HibernateException
Transaction tran = session.beginTransaction();//启动事务
String hql = "UPDATE Ffconfigure SET configurevalue=? WHERE configureid=?";
Query q = session.createQuery(hql);
q.setString(0, configureid);
q.setString(1, configurevalue);
q.executeUpdate();
tran.commit();//提交事务
return null;

);
本回答被提问者采纳

hibernate 级联删除

hibernate的级联删除似乎都是在主表的数据删除后,副表相关的字段被清除掉,请问,能不能在主表的数据删除后,副表的整条数据被删除掉,也就是说以前执行的是一个UPDATE,一个DELETE语句,现在要执行2个DELETE语句
主表usergroup 副表usergroup_authority 一对多关系
这个是现在打印出来的语句:Hibernate: update
ids.dbo.usergroup_authority set usergroup_id=null where usergroup_id=?
Hibernate: delete from ids.dbo.usergroup where usergroup_id=?

我想变成这样:Hibernate: delete from ids.dbo.usergroup_authority where usergroup_id=?
Hibernate: delete from ids.dbo.usergroup where usergroup_id=?

能不能用HIBERNATE配置解决?

在映射文件里:两种方法
1.在父端的one-to-one/many-to-one关系:设置cascade=”delete”或cascade=”all”。

2.在父端的one-to-many关系(map, set, list, bag):设置cascade=”all-delete-orphan”或cascade=”all”。
即可。
参考技术A 你在Service方法中,在加一句,dao.delete(object)不就得了,

不能,人家吧关联属性给你cascade成null已经算很牛了,还要咋地啊
参考技术B 你在set标签配置里面加上属性cascade="all" inverse="false" <!-- inverse 是否放弃对级联对象的控制 默认false不放弃控制 --> 测试一下 应该不行的,目前还没找好好的解决办法 参考技术C 在一对多的getter()方法前面加上@Cascade(CascadeType.DELETE_ORPHAN)

以上是关于hibernate里面发了update语句但是数据库就是不更新的主要内容,如果未能解决你的问题,请参考以下文章

SQL里面的UPDATE更新语句数据怎么写?

hibernate的update及JDBC数据库批量操作

hibernate的update及JDBC数据库批量操作

hibernate在Oracle中插入数据,默认字段被设置为null的问题解决

hibernate 一对多update操作的hql语句怎么写?

解决Hibernate4执行update操作,不更新数据的问题