Исключение не выдается, когда ошибка возникает во втором SQL / вставке / обновлении оператора - PullRequest
0 голосов
/ 11 июня 2018

У нас проблема в том, что наше приложение не генерирует исключения 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
}

1 Ответ

0 голосов
/ 11 июня 2018

Для «Children» должно быть закрытие «ownTo», чтобы вызов save () для «Parent» каскадировал сохранение и «Children».

static belongsTo = [parent: Parent]

ref: http://gorm.grails.org/6.0.x/hibernate/manual/#gormAssociation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...