powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate transactional
9 сообщений из 9, страница 1 из 1
Hibernate transactional
    #39882642
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть метод_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 выполняется в другой транзакции, то его транзакция бы игнорировалась, так скажем?

Я не очень силён в этом ((
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882653
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Разве это хибера аннотация?
Найди чья аннотация. Прочти что вложение их не влияет на транзакцию...
Работай.
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882654
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicесли метод_2 выполняется в другой транзакции, то его транзакция бы игнорировалась, так скажем?почему? Приведи пример.
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882655
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enum Constant Резюме
MANDATORY
Поддержите текущую транзакцию, сгенерируйте исключение, если оно не существует
NESTED
Выполнить внутри вложенной транзакции, если текущая транзакция существует, вести себя как PROPAGATION_REQUIRED в противном случае.
NEVER
Выполнить без транзакций, выдать исключение, если транзакция существует.
NOT_SUPPORTED
Выполнить без транзакций, приостановить текущую транзакцию, если она существует.
REQUIRED
Поддержите текущую транзакцию, создайте новую, если ее не существует.
REQUIRES_NEW
Создайте новую транзакцию, приостановите текущую транзакцию, если она существует.
SUPPORTS
Поддержка текущей транзакции, выполнение без транзакций, если ее не существует.
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882657
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, всё)) я затупил, да транзакция спринговая.
В итоге оказалось, что проблема была сбоку, я не мог понять, почему метод_2 у меня не удалял записи.
Подебажил и понял, что записи, которые тоже нужно удалить(пометить удаленными) находятся во время удаление через айдишник объекта, а объект удаляется раньше.
Из-за этого записи не находятся и соответственно не удаляются. Я решил, что проблема в транзакциях и поставил метод удаления записей вперед.
Получил вышеуказанную ошибку и решил, что это ошибка именно из-за наличия разных транзакций.

В итоге сделал так, что сначала собираю объекты в лист, затем делаю манипуляции с основным объектом и далее уже запрошенные ранее записи помечаю удаленными в этой же транзакции, не зависимо от того, существует ли еще привязанный к ним удаленный объект или нет.

Спасибо, что откликнулись :)
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882658
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpEnum Constant Резюме
MANDATORY
Поддержите текущую транзакцию, сгенерируйте исключение, если оно не существует
NESTED
Выполнить внутри вложенной транзакции, если текущая транзакция существует, вести себя как PROPAGATION_REQUIRED в противном случае.
NEVER
Выполнить без транзакций, выдать исключение, если транзакция существует.
NOT_SUPPORTED
Выполнить без транзакций, приостановить текущую транзакцию, если она существует.
REQUIRED
Поддержите текущую транзакцию, создайте новую, если ее не существует.
REQUIRES_NEW
Создайте новую транзакцию, приостановите текущую транзакцию, если она существует.
SUPPORTS
Поддержка текущей транзакции, выполнение без транзакций, если ее не существует.
Да, это тоже полезная информация, её читал, думал про вложенные транзакции, но уже решилось, спасибо. Косяк был в методе)
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882659
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

Ошибка Optimistic Lock о чем говорит? Ты прочитал значение из БД в двух бизнес транзакциях (например version = 7).

Теперь по одному из путей обновляешь в БД запись до (version =8).

И при этом еще раз пытаешься обновить БД своей старой записью (где version=7). Что то у тебя не так в бизнес процессах.


Можно кончено поиграться @Transaction(rollbackFor="SomeException.class") но у тебя не там проблема, а в бизнес процессе.
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882660
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

Пока написал уже все решилось
...
Рейтинг: 0 / 0
Hibernate transactional
    #39882689
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0Nixic,
Пока написал уже все решилось
Возможно кому-то пригодится :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate transactional
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]