大家好:我在配置的时候发现事务是不起作用的,大家帮忙看看是哪里出了问题,spring 3.0.3 hibernate1.4  谢谢:
applicationContext.xml 配置: <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
    <property name="configLocation" value="classpath:jbpm.hibernate.cfg.xml" />
    <property name="dataSource" ref="dataSource" /> 
  </bean>  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
  </bean>

 <tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
  <tx:method name="*"/>
  </tx:attributes>
 </tx:advice>
 
 <aop:config>
  <aop:pointcut expression="execution(* com.test.TransAction.*(..))" id="txPointcut"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
 </aop:config>
 
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
  
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@172.17.1.1:1521:database" /> 
    <property name="username" value="test" />
    <property name="password" value="test" />
  </bean>
  
 <bean id="transAction" class="com.test.TransAction">
 <property name="sessionFactory" ref="sessionFactory" />
 </bean>
hibernate 配置:
<hibernate-configuration>
  <session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 
    <property name="hibernate.format_sql">false</property>
    <property name="hibernate.jdbc.batch_size">0</property> 
     
  </session-factory>
</hibernate-configuration>
测试类:
public class TransAction extends HibernateDaoSupport { 
    private SessionFactory sessionFactory;  
  public void testTrans3() throws RuntimeException{
   Session session=this.getSession();
   
  
  SQLQuery query1=session.createSQLQuery("update deployment set timestamp_='20120219'");
  query1.executeUpdate();
  
  SQLQuery query=session.createSQLQuery("update deployment set timestamp_='20120301089089058795789'");
  query.executeUpdate(); 
  
  }
}如果事务启动的话,第一个sql执行后应该是回滚的,因为第二个sql是会报错的,但是结果没有回滚,请帮忙看看那里有问题,谢谢!

解决方案 »

  1.   

    首先你要明确几点
    1 你的service最好有个接口
    2 你的事务方法要在接口里有声明
    3 你的切面路径对不对
      

  2.   

    起面路径是对的<bean id="transAction" class="com.test.TransAction">
    这个是测试bean的路径 
    1,2是什么意思,不是很明白?
      

  3.   

    是不是应该写一个TransActionInter(){
       public void testTrans4() throws RuntimeException
    }
    这个接口类,然后TransAction 继承这个接口类?
    其他还需要改么?