JunitとRestテンプレートを使用してサービスクラスをテストしようとしています。私のサービスはデータベースへの複数の呼び出しを持っています。ただし、コールのいずれかがうまくいかなかったり、例外をスローすると、以前のコミットされたコールはロールバックされるはずです。しかし、以前のコミットされたトランザクションはロールバックされません。Junitで実行中にトランザクションがSpringでロールバックされない理由
ここ@Transactional
class A
{
@Autowired
B object
object.someMethod()//this method has logic to save the data
object.someOtherMethod()//this method will throws an Exception
}
@Transactional
class B
{
someOtherMethod()
{
//here it will throw an exception
}
}
は私の部分のバネの設定ファイルである
<tx:annotationdriven ref=transactionManager/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryBean"/>
</bean>
<bean id="entityManagerFactoryBean"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dbDataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">validate</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.connection.autocommit">false</prop>
</props>
</property>
</bean>
スプリングの設定を確認しましたか?データソースファイルでautocommitがtrueに設定されている可能性があります。 –
@vineethsivanごみを出さないでください。例外がスローされた場合、トランザクションはデフォルトでロールバックされます。これは '@ Transactional'アノテーションで変更できますが、自動コミットはこれとは関係ありません。 – Kayaman