2015-05-13 3 views
0

Я использую Grails 2.4.4 и базу данных MySQL. Мы пытаемся клонировать группу таблиц в нашей базе данных, имеющих отношения родитель-потомок. Например, у нас есть автор таблицы с книгой его детской таблицы и книга с иностранным ключом fk_book, указывающим на автора.Исключение оптимистического блокирования с использованием Grails GORM и MySQL

Мы извлекаем иерархию через Author.get(id), автор клонирования, связанную с ней книгу и сохраняем с помощью clonedAuthor.save(flush:true). У нас есть иерархия нескольких таблиц, подобных этому, у некоторых есть OneToOne, а у некоторых есть отношения OneToMany. В базе данных ограничения внешнего ключа указаны как «УДАЛИТЬ НЕТ ДЕЙСТВИЙ».

Проблема возникает при вызове. Он бросает Оптимистическая блокировка Failure Exception

Row was updated or deleted by another transaction. 

Я не получаю, который транзакция обновляет строку, так как у нас есть только одна сделка (только один хит).

+0

пожалуйста, просто опубликовать полное сообщение об ошибке, в приведенном выше сообщении об ошибке отсутствует важная информация, он не показывает, на каком доменном объекте это происходит. – dsharew

ответ

0

У меня возникала такая же проблема, когда изменение данных db с помощью консоли mysql, в то время как некоторые данные уже выведены на сеанс hibernate.


почему это происходит?

Просто, данные в режиме db и в спящем режиме не синхронизированы.

Кроме того, если вы ставите объект домена (или любой связанный объект домена) в сессии попытаться повторно прикрепить объект (obj.attach()) перед вызовом save, delete ..

Смежные вопросы