博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate事务处理
阅读量:6651 次
发布时间:2019-06-25

本文共 3075 字,大约阅读时间需要 10 分钟。

  hot3.png

抛异常的代码:

((Long) getHibernateTemplate().iterate(query).next()).intValue()

异常信息:

Caused by: org.hibernate.exception.GenericJDBCException: could not get next iterator result	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)	at org.hibernate.impl.IteratorImpl.next(IteratorImpl.java:161)	at com.yotoo.crm.dao.VisitLogDaoImp.findCountByCriteria(VisitLogDaoImp.java:98)	at com.yotoo.crm.service.impl.VisitLogServiceImp.findAllVisitLog(VisitLogServiceImp.java:46)	at com.yotoo.crm.service.impl.VisitLogServiceImp$$FastClassByCGLIB$$4353dcb1.invoke(
) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:55) ... 34 moreCaused by: com.microsoft.sqlserver.jdbc.SQLServerException: 结果集已关闭。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:130) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(SQLServerResultSet.java:211) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getLong(SQLServerResultSet.java:2058) at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:278) at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:278) at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$2.doExtract(BigIntTypeDescriptor.java:61) at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:249) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:229) at org.hibernate.impl.IteratorImpl.next(IteratorImpl.java:140) ... 41 more

问题原因:

出现错误的原因是没有进行事务的配置,resultSet会关闭掉。

解决方法:

第一步:在spring的配置文件中添加事务的配置(如果你已经添加,那就不用了)
xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
到这里spring的配置就完成了
第二步骤:在dao的上一层,即哪个类调用了刚才出错的语句的那个类添加事务,即在class前面添加一个注解:@Transaction
例子如下:
@Service("fileManageService")
@Transactional
public class FileManageServiceImpl implements IFileManageService{
 
private IFileDAO fileDAO;

或者直接用xml配置,参考如下:

            
            
            
            

事务配置好之后就不会出现那个bug了

转载于:https://my.oschina.net/julycn/blog/331751

你可能感兴趣的文章
FileBytes写成文件并存档
查看>>
Metro App中关于挂起与恢复的操作
查看>>
Stani's Python Editor下载
查看>>
[译]Javascript:Harmony(ECMAScript规范)制定流程
查看>>
每天一个linux命令(36):diff 命令
查看>>
2012第50周五
查看>>
一个简单的算法_应该是最笨的写法了
查看>>
20120622第二天_面向对象\02面向对象
查看>>
[翻译].NET框架中的缓存
查看>>
Microsoft Visual Studio 2010 正式版下载[含旗舰版序列号](中、英文版)
查看>>
轻快的VIM(四):修改
查看>>
心惊胆战的多屏图片切换
查看>>
office excel读写类NPOI
查看>>
技术支持经验总结
查看>>
正则教程
查看>>
如何使用Exchange Web Service获取日历(包含循环会议)
查看>>
Oracle二三事之 EBS升级
查看>>
C# DEV XtraGrid
查看>>
【SAS NOTES】data set if
查看>>
关于C#的Process的内存相关属性解读
查看>>