|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Всем привет! Есть метод_1 с @Transactional внутри него выполняются метод_2 другого сервиса, который тоже имеет @Transactional, так он может вызываться отдельно через другой запрос api. Ну и естественно получаем: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) Как бы указать в аннотации такое поведение, что если метод_2 выполняется в другой транзакции, то его транзакция бы игнорировалась, так скажем? Я не очень силён в этом (( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 11:55 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Nixic, Разве это хибера аннотация? Найди чья аннотация. Прочти что вложение их не влияет на транзакцию... Работай. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:21 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Nixicесли метод_2 выполняется в другой транзакции, то его транзакция бы игнорировалась, так скажем?почему? Приведи пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:22 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Enum Constant Резюме MANDATORY Поддержите текущую транзакцию, сгенерируйте исключение, если оно не существует NESTED Выполнить внутри вложенной транзакции, если текущая транзакция существует, вести себя как PROPAGATION_REQUIRED в противном случае. NEVER Выполнить без транзакций, выдать исключение, если транзакция существует. NOT_SUPPORTED Выполнить без транзакций, приостановить текущую транзакцию, если она существует. REQUIRED Поддержите текущую транзакцию, создайте новую, если ее не существует. REQUIRES_NEW Создайте новую транзакцию, приостановите текущую транзакцию, если она существует. SUPPORTS Поддержка текущей транзакции, выполнение без транзакций, если ее не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:25 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Так, всё)) я затупил, да транзакция спринговая. В итоге оказалось, что проблема была сбоку, я не мог понять, почему метод_2 у меня не удалял записи. Подебажил и понял, что записи, которые тоже нужно удалить(пометить удаленными) находятся во время удаление через айдишник объекта, а объект удаляется раньше. Из-за этого записи не находятся и соответственно не удаляются. Я решил, что проблема в транзакциях и поставил метод удаления записей вперед. Получил вышеуказанную ошибку и решил, что это ошибка именно из-за наличия разных транзакций. В итоге сделал так, что сначала собираю объекты в лист, затем делаю манипуляции с основным объектом и далее уже запрошенные ранее записи помечаю удаленными в этой же транзакции, не зависимо от того, существует ли еще привязанный к ним удаленный объект или нет. Спасибо, что откликнулись :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:27 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
PetroNotC SharpEnum Constant Резюме MANDATORY Поддержите текущую транзакцию, сгенерируйте исключение, если оно не существует NESTED Выполнить внутри вложенной транзакции, если текущая транзакция существует, вести себя как PROPAGATION_REQUIRED в противном случае. NEVER Выполнить без транзакций, выдать исключение, если транзакция существует. NOT_SUPPORTED Выполнить без транзакций, приостановить текущую транзакцию, если она существует. REQUIRED Поддержите текущую транзакцию, создайте новую, если ее не существует. REQUIRES_NEW Создайте новую транзакцию, приостановите текущую транзакцию, если она существует. SUPPORTS Поддержка текущей транзакции, выполнение без транзакций, если ее не существует. Да, это тоже полезная информация, её читал, думал про вложенные транзакции, но уже решилось, спасибо. Косяк был в методе) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:28 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Nixic, Ошибка Optimistic Lock о чем говорит? Ты прочитал значение из БД в двух бизнес транзакциях (например version = 7). Теперь по одному из путей обновляешь в БД запись до (version =8). И при этом еще раз пытаешься обновить БД своей старой записью (где version=7). Что то у тебя не так в бизнес процессах. Можно кончено поиграться @Transaction(rollbackFor="SomeException.class") но у тебя не там проблема, а в бизнес процессе. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:29 |
|
Hibernate transactional
|
|||
---|---|---|---|
#18+
Nixic, Пока написал уже все решилось ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:31 |
|
|
start [/forum/topic.php?fid=59&fpage=21&tid=2121046]: |
0ms |
get settings: |
7ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
174ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 558ms |
0 / 0 |