您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> hibernate的问题

hibernate的问题

来源:网络整理     时间:2016/7/23 10:58:50     关键词:

关于网友提出的“ 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;
下面同理

引用 5 楼 zhangzhenyuzy 的回复:
Quote: 引用 4 楼 xinlan1022 的回复:

等于0的时候就抛出异常好了,这样事务就会回滚

if xx=0 throw e 
else{
if xxx=0 throw
是这样么?
解决方案2:

把这三个操作放在service层里面的一个方法里就行了,事务管理管理service的方法

解决方案3:

你可以尝试一下hibernate的批量更新,http://blog.csdn.net/uohzoaix/article/details/7372427

解决方案4:

等于0的时候就抛出异常好了,这样事务就会回滚


以上介绍了“ hibernate的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2862624.html

相关图片

相关文章