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