关于网友提出的“ hibernate的问题”问题疑问,本网通过在网上对“ hibernate的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: hibernate的问题
描述:hibernate事务
ssh中,spring设置所有方法的事务默认开启.
如果一个方法,里面要同时对3个表进行操作
比如 Hql1="update a set a.name='aa' where a.id=1";
Hql2="update b set b.name='bb' where b.id=1";
Hql3="update c set c.name='cc' where c.id=1";
然后获得query
然后调用query.executeUpdate();
这几部没问题.能够事务管理. 就说如果Update语句有问题.会回滚.
现在我要这3个hql都执行update,事务才提交.请问该怎么做/
我现在是利用返回值
if(query.executeUpdate(hql1)!=0 && query.executeUpdate(hql2)!=0&&query.executeUpdate(hql3)){
return ture;
}
但是如果hql1 hql2那一步执行==0,后面的hql3就不会执行.
我想这3个语句同时执行或者不执行.请问该怎么做?
不知道我意思说的明白么?
解决方案1: Hql1="update a set a.name='aa' where a.id=1";
Hql2="update b set b.name='bb' where b.id=1";
Hql3="update c set c.name='cc' where c.id=1";
if(query.executeUpdate(hql1)==0)throw e;
if(query.executeUpdate(hql2)==0) throw e;
下面同理
解决方案2: 把这三个操作放在service层里面的一个方法里就行了,事务管理管理service的方法
解决方案3: 你可以尝试一下hibernate的批量更新,http://blog.csdn.net/uohzoaix/article/details/7372427
解决方案4: 等于0的时候就抛出异常好了,这样事务就会回滚
以上介绍了“ hibernate的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2862624.html