【发布时间】:2018-06-11 06:59:19
【问题描述】:
我们的问题是,我们的应用在某些情况下不会抛出 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 中得到解决?或者有任何想法,我们如何修补这个?
我们正在使用:
- Grails 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
}
【问题讨论】:
-
您是否尝试在单独的事务中运行每个查询?
-
ORM 自己创建插入/更新。有一个插入基表和一个插入外部表。这需要在一个事务中。
-
编辑问题并显示代码
标签: hibernate jpa grails jdbc grails-orm