Я прочитал много страниц stackoverflow о весенней транзакции. Моя весна сделка конфигурации являетсяЯвляется ли весенняя транзакция только при вводе метода обслуживания?
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
Моя служба, как это.
@Service
public class TestServiceImpl implements TestService {
@Override
public void testRollback() {
testRollbackSecondLevel();
}
@Transactional
@Override
public void testRollbackSecondLevel() {
// any update sql in here
carCostService.testUpdate();
throw new RuntimeException();
}
}
я написать тестовый класс, чтобы проверить, в моем тестовом коде, когда я использую
// this test is not roll back, and the Transactional even not created
@Test
public void testTransactional() {
// use this function, the Transactional don't work
interCityService.testRollback();
}
// this test is roll back successfully
@Test
public void testTransactionalSecondLevel() {
// but if I use the second level function instead of the first function,
// the Transactional works fine, and the data can roll back
interCityService.testRollbackSecondLevel();
}
И я отлаживать код, когда я использую первый тест, транзакционный даже не может быть создан. Второй способ может успешно создать транзакцию.
Я использую sql, чтобы судить о том, что сделка существует.
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
Если sql возвращает пустой набор, поэтому транзакция не была создана.
Так в чем проблема? заранее спасибо.
Я использую весеннюю версию 4.1.2.RELEASE.
Я все еще не понимаю, как изменить мой код на работу? Изменение в . Это не работает. –
yunfan