当第二个 sql 插入/更新语句上发生错误时,不会引发异常



我们遇到了一个问题,我们的应用程序在某些情况下不会抛出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.

此问题是否已在较新版本的休眠中修复?或者有人有一个想法,我们如何修补它?

我们正在使用:

  • 圣杯 2.5.6
  • 休眠 4.3.8
  • 休眠 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
}

"Children" 必须具有 'belongsTo' 闭包,才能调用 save(( 的 'Parent' 才能将保存也级联到 'Children'。

static belongsTo = [parent: Parent]

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

相关内容

最新更新