大家好:我在配置的时候发现事务是不起作用的,大家帮忙看看是哪里出了问题,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是会报错的,但是结果没有回滚,请帮忙看看那里有问题,谢谢!
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 你的service最好有个接口
2 你的事务方法要在接口里有声明
3 你的切面路径对不对
这个是测试bean的路径
1,2是什么意思,不是很明白?
public void testTrans4() throws RuntimeException
}
这个接口类,然后TransAction 继承这个接口类?
其他还需要改么?