Я не могу откатить транзакцию в Spring Boot 2.1.4 с участием двух DAO (JDBC).DAO реализуют параметризованный интерфейс.Первый DAO вставляет запись в три таблицы, а последний DAO вставляет запись в одну таблицу.Я заставляю последнюю вставку DAO терпеть неудачу.
База данных - DB2.
Некоторый код:
public interface FooDao<T extends Foo> {
int insert(T foo) throws SQLException;
}
@Repository
public class FooDaoJdbc implements FooDao {
@Override
public int insert(Foo foo) throws SQLException {
insertFoo(foo);
insertFooDescriptions(foo);
insertFooActivity(foo);
return 0;
}
}
@Repository
public class BazDaoJdbc implements FooDao<Baz> {
@Override
public int insert(Baz baz) throws SQLException {
public interface FooService<T extends Foo> {
void add(T foo) throws SQLException;
}
@Service
public class BazServiceImpl implements FooService<Baz> {
private FooDao<Baz> bazDaoJdbc;
private FooDao<Foo> fooDaoJdbc;
@Transactional(rollbackFor = Exception.class)
public void add(Baz baz) throws SQLException {
fooDaoJdbc.insert(foo);
bazDaoJdbc.insert(baz);
}
}
Кажется, что FooDaoJdbc и BazDaoJdbc находятся в одной транзакции, когда я отлаживаю TransactionAspectSupport, но откат кажетсяигнорировать FooDaoJdbc.У меня нет записи в таблице «baz», но я ожидаю, что три таблицы «foo» также откатятся.Мои глаза скрещены в этой точке.У меня есть неуместная аннотация?Я делаю вещи слишком "причудливыми" с дженериками?Заранее спасибо за помощь!