У меня проблема при тестировании JTA1.2 @Transactiona
l аннотация на сервере приложений Glassfish 4.1. Если я запускаю выполнить() метод данного компонента:@ Транзакционная транзакция не откат
@Named
@RequestScoped
public class IndexController {
@Resource(name = "ds")
private DataSource ds;
@Transactional
public void execute() throws SQLException, SystemException {
try (Connection con = ds.getConnection();) {
try (PreparedStatement ps = con.prepareStatement(
"INSERT INTO test(id) VALUES(1)"
);) {
ps.executeUpdate();
throw new IllegalArgumentException();
}
}
}
}
Я получаю ожидаемую ошибку:
Caused by: javax.transaction.RollbackException: Transaction marked for rollback.
но когда я выполняю оператор выбора:
SELECT * FROM test;
Я вижу, что строка была вставлено. Что не так?
Вы проверили это? http://stackoverflow.com/questions/16301315/spring-transactional-and-jdbc-autocommit – Multisync