我们遇到的问题是,我们的应用程序在某些情况下不会抛出SQL异常。 当第二个或更高版本的插入/更新语句发生错误时,会发生这种情况。此行为的描述为here。
我们只会收到如下日志条目: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中修复?或者有任何人的想法,我们如何修补这个?
我们正在使用:
示例: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
}
答案 0 :(得分:-1)
'Children'必须具有'belongsTo'闭包,用于调用'Parent'的save()以将保存级联到'Children'。
static belongsTo = [parent: Parent]
参考:http://gorm.grails.org/6.0.x/hibernate/manual/#gormAssociation