У нас проблема в том, что наше приложение не генерирует исключения SQL в некоторых случаях.Это происходит, когда ошибка возникает во втором или более позднем операторе вставки / обновления.Это поведение описано здесь .
Мы получаем только такую запись в журнале, как: ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Transaction was deadlocked on resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Исправлена ли эта проблема в одной из более новых версий hibernate?Или у кого-нибудь есть идея, как мы можем это исправить?
Мы используем:
- Grails 2.5.6
- Hibernate 4.3.8
- Hibernate JPA: 2.1
Пример: myObject.save()
создает 2 оператора вставки.Один в базовый стол и один в иностранный стол.Вторая вставка вызывает ошибку, которая должна привести к исключению.
Пример кода:
class Children {
Parent parent
String name
}
class Parent {
static hasMany = [children: Children]
}
@Transactional
void save() {
Parent parent = new Parent()
parent.addToChildren(new Children(name: 'Bob'))
parent.save() //more then 1 insert is executed
}