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