hibernate rollback异常 急!高手帮忙!!

sankun 2009-05-07 02:59:58
首先是我在本地运行都正常的,然后把系统放到了虚拟主机上,用的是他们提供的数据库
都是刚开始正常的添别查询都没问题,然后过一会就出现下面的异常,
只是显示就出现下面的异常,好像这和事务的处理什么的有关系,我也不懂这个,请高手帮忙了!
给出相关代码:
hibrenateconfig:

<hibernate-configuration>
<session-factory >
<property name="hibernate.connection.url">jdbc:mysql://123.456.11.2/database1</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="hibernate.hbm2ddl.auto">update</property>



SPring相关的配置

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" >
<value>classpath:hibernate.cfg.xml</value> <!-- 配置后会创建SessionFactory 根据hibernateXML的配置 创建-->
</property>
</bean>
<!-- 配置事务管理器 把sessionFactory注入transactionManager里面-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* sankun.usermanager.manager.*.*(..))"/> <!-- 这个包下面所有方法,(..)是指任何参数 -->
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
<aop:config>
<aop:pointcut id="newsManagerMethod" expression="execution(* cn.buyingexpo.manager.*.*(..))"/> <!-- 这个包下面所有方法,(..)是指任何参数 -->
<aop:advisor pointcut-ref="newsManagerMethod" advice-ref="txAdvice"/>
</aop:config>
</beans>




//一个具体的调用
public class NewsManagerImpl extends HibernateDaoSupport implements NewsManager {
public void addNews(News news) {
this.getHibernateTemplate().save(news);
}
public List queryNewsList(final int pageNo, final int pageSize ,final char newsType) {
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
// 使用回调函数实现分页
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session
.createQuery(
"select id,title,createdDate from News n where n.newsType='" + newsType + "' order by createdDate desc ")
.setFirstResult((pageNo - 1) * pageSize).setMaxResults(
pageSize).list();
}

});
}
......



//在action这样调用的,
//部分代码
request.setAttribute("inewsList", newsManager.queryNewsList(1,8,'i'));
//newsManager 使用Spring的注入

下面是异常代码
javax.servlet.ServletException: Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)


root cause

org.springframework.transaction.TransactionSystemException: Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed
org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:580)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:631)
org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:608)
org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:328)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:111)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
$Proxy103.queryNewsList(Unknown Source)
cn.buyingexpo.web.action.IndexAction.execute(IndexAction.java:30)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)

...全文
1392 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyongyongwuyong 2010-04-16
  • 打赏
  • 举报
回复
在web.xml中加这个
<filter>
<filter-name>OpenSessionInViewFilterfilter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilterfilter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
StanleyChi 2010-04-16
  • 打赏
  • 举报
回复
mysql如果连接忘记关闭的话,以后可能就不好用了,最好把数据源改成其他的不要用hibernate默认的,可以用c3p0它能够把超时的连接自动关闭。
鲜为人知 2010-04-16
  • 打赏
  • 举报
回复
MySQL数据库连接超时
Connection.close() has already been called. Invalid operation in this state

是这个原因
lnjzlibin 2009-06-14
  • 打赏
  • 举报
回复
你的数据库和应用是不是在一台服务器上?你试试把ip改成127.0.0.1试试,我觉得应该是他服务器的防火墙造成的。
sankun 2009-05-07
  • 打赏
  • 举报
回复
为了公司安全,我把hibernate连接到数据库给改了,数据库的连接地址,用户名,密码,数据库名都是正常的

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧