`

Hibernate插入数据时报Could not open Hibernate Session for transaction异常

阅读更多
在系统监控controller调用service把数据入库时,报了该异常:

 ERROR [Timer-2] timer.SystemMonitoringTimer (SystemMonitoringTimer.java:92)     - blingtel oops, got an exception:
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.jdbc.connections.spi.ConnectionProvider]
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:440)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy27.save(Unknown Source)
    at com.blingtel.oam.systemmonitoring.timer.SystemMonitoringTimer.run(SystemMonitoringTimer.java:88)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.jdbc.connections.spi.ConnectionProvider]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:126)
    at org.hibernate.internal.AbstractSessionImpl.getJdbcConnectionAccess(AbstractSessionImpl.java:255)
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.<init>(JdbcCoordinatorImpl.java:75)
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.<init>(TransactionCoordinatorImpl.java:87)
    at org.hibernate.internal.SessionImpl.<init>(SessionImpl.java:237)
    at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1801)
    at org.hibernate.internal.SessionFactoryImpl.openSession(SessionFactoryImpl.java:1009)
    at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:191)
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:176)
    at org.springframework.orm.hibernate4.SessionFactoryUtils.openSession(SessionFactoryUtils.java:114)
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:340)
    ... 11 more



最终确定是因为数据链接自动关闭,而不是spring和hibernate的问题。
解决办法是:打开数据库的重连接。
在sessionFactory里配置:
<prop key="hibernate.autoReconnect">${hibernate.autoReconnect}</prop>


在资源文件中加入:
hibernate.autoReconnect=true


经过多次长时间的测试,已经不再报该异常了
分享到:
评论
2 楼 无双Rama 2014-01-07  
mysql截取字段值:
update HnbInfo set hnbid = left(hnbid, 24) where length(hnbid) > 24
1 楼 无双Rama 2013-08-13  
controller:

try  
 {  
     // 保存任务  
     // 保存用户  
     batchPeriodLocationServ.insertTaskAndUsers(batchUserList, newTask);  
 }  
 catch (Exception e)  
 {  
     // TODO Auto-generated catch block  
     logger.error(Global.LOG_EXCEPTION_NAME, e);  
 }


BatchPeriodLocationServiceImpl:
@Override  
public void insertTaskAndUsers(List<BatchPeriodUserInfo> batchUserList, LocationConditionTask newTask)  
    throws Exception  
{  
    batchUserDao.insertBatchUser(batchUserList);  
    locaCondDao.insertLocationConditionTask(newTask);  
}  

相关推荐

    Could not roll back Hibernate transaction.doc

    Could not roll back Hibernate transaction.doc

    Hibernate_Session_Transaction

    可以对hibernate的 Session 和 Transaction 有更深入的认识 希望对一些概念比较模糊的人 有帮助

    HibernateSession , Transaction 研究

    NULL 博文链接:https://stewchicken.iteye.com/blog/938875

    Hibernate+Transaction+myeclipse6+事例+工程源码.rar

    介绍Hibernate+Transaction+myeclipse6+事例的应用参考工程源码.

    dbcp 连接池不合理的锁导致连接耗尽解决方案

    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot get a ...

    spring-hibernate-maven-transaction整合

    spring-hibernate-maven-transaction整合

    Beginning Hibernate: For Hibernate 5

    Get started with the Hibernate 5 persistence layer and gain a clear introduction to the current standard for object-relational persistence in Java. This updated edition includes the new Hibernate 5.0 ...

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...

    hibernate操作数据库笔记

    //该方法会延迟加载/获取数据(只有使用该对象中的字段时才会向数据库发出查询语句),该方法会在内部和二级缓存中查找数据,当数据库中没有要查询的数据时报ObjectNotFoundException异常 (7).createQuery(String HQL)...

    Beginning.Hibernate.For.Hibernate.5.4th.Edition

    Get started with the Hibernate 5 persistence layer and gain a clear introduction to the current standard for object-relational persistence in Java. This updated edition includes the new Hibernate 5.0 ...

    Hibernate体系结构的概要图

    Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务...

    Hibernate Web应用的开发步骤

    Hibernate Web应用的开发一般经过以下几个步骤: (1)创建数据库。 (2)将Hibernate所需的JAR包复制到WEB-INF/lib下。 (3)创建Hibernate的配置文件。 (4)利用Hibernate的第三方工具或Eclipse的有关插件从...

    hibernate4.3完整jar包

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java...Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。

    hibernate session.doc

    Transaction tx1 = session1.beginTransaction(); // 先加载一个持久化对象 Customer customer = (Customer)session.get(Customer.class, new Long(1)); session.delete(customer); // 计划执行一个delete语句

    Spring+hibernate+quartz 定时操作数据库

    在spring+hibernate的框架中定时操作数据库,主要是拿到sessionFactory,不会出现no session 和transaction no-bound等问题,由sessionFactory完成对数据的操作,有些包是没有用的,有兴趣的可以自己删除掉

    hibernate.properties

    ## you do NOT need this setting if you specify hibernate.transaction.manager_lookup_class #jta.UserTransaction jta/usertransaction #jta.UserTransaction javax.transaction.UserTransaction #jta....

    Hibernate中的query 分页.doc

    8. session.beginTransaction(); 9. Query query = session.createQuery("from User"); 10. query.setFirstResult(0);//从第一条记录开始 11. query.setMaxResults(4);//取出四条记录 12. List userList = query...

    Hibernate所需jar包

    antlr-2.7.7 c3p0-0.9.2.1 dom4j-1.6.1 hibernate-c3p0-4.3.5.Final hibernate-commons-annotations-...jboss-transaction-api_1.2_spec-1.0.0.Final mchange-commons-java-0.2.3.4 mysql-connector-java-5.1.30-bin

    PureDataSystem for Transaction探析

    PureDataSystem for Transaction探析

    Beginning Hibernate, 3rd Edition

    Beginning Hibernate, Third Edition is ideal if you’re experienced in Java with databases (the traditional, or «connected,» approach), but new to open-source, lightweight Hibernate, a leading object...

Global site tag (gtag.js) - Google Analytics