Я использую пружинные транзакции и режим гибернации для вставки данных в таблицу базы данных oracle:
Вот сценарий, с которым я сталкиваюсь: у меня есть две таблицы, которые имеют однозначное сопоставление в режиме гибернации. И я вставляю данные в эти две таблицы, используя приведенные ниже вызовы методов. Транзакция распространяется от одного метода к другому. Так что вставка данных в обе таблицы происходит в одной транзакции.
Проблема: в том, что при вставке данных во второй таблице, если исключение, такое как "constraintvoilationexception --- не может вставить ноль в конкретный столбец", выбрасывается, .... тогда в идеале данные не должны вставляться ни в одну из таблиц, т.е. транзакция должна откатываться ,, , ... Но этого не происходит ... когда возникает исключение при вставке данных во вторую таблицу ... записи вставляются в первую таблицу, что в идеале не должно происходить, т. Е. Вся транзакция должна откатываться. ..
Можете ли вы помочь, ... где я ошибаюсь при применении @Transactional, или есть какая-то другая причина для этого (может быть, со стороны базы данных, хотя не уверен)
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void methodA(){
// inserting data in table 1;
methodB();
}
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void methodB{
// inserting data in table 2;
}