- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下域类:
class Book {
String name
// more properties here, but name is the only one relevant for this example
}
<g:form action="updateName" id="${book.id}">
<g:hiddenField name="version"/>
<g:textField name="name"/>
...
</g:form>
def updateName() {
println("IN UPDATENAME()")
def book = Book.get(params.id)
println("VERSION BEFORE ASSIGN: ${book.version})
book.version = params.long('version')
println("VERSION AFTER ASSIGN: ${book.version})
book.name = params.name
book.save(flush: true)
...
}
updateName
,然后在另一个浏览器中执行。第二个
updateName
应该抛出一个
OptimisticLockingFailureException
,但是不是。
IN UPDATENAME()
VERSION BEFORE ASSIGN: 0
VERSION AFTER ASSIGN: 0
update book set version=?, name=? where id=? and version=?
binding parameter [1] as [BIGINT] - 1
binding parameter [2] as [STRING] - 'abc123'
binding parameter [3] as [BIGINT] - 1
binding parameter [4] as [BIGINT] - 0
IN UPDATENAME()
VERSION BEFORE ASSIGN: 1
VERSION AFTER ASSIGN: 0
update book set version=?, name=? where id=? and version=?
binding parameter [1] as [BIGINT] - 1
binding parameter [2] as [STRING] - 'def456'
binding parameter [3] as [BIGINT] - 1
binding parameter [4] as [BIGINT] - 1
最佳答案
version
是域类的属性(而不是字段),它实际上定义为访问器方法getVersion()
。 在version
中未定义DefaultGrailsDomainClass
的设置程序。
同样在脚手架 Controller 的情况下,尽管检查/验证是手动完成的,但是没有手动设置version
属性的地方。当 session flush
遇到版本不匹配时,休眠将在 session 中使用乐观锁定,并且仅当第二个用户是脏读的受害者时才会发生不匹配。
在您的情况下,要么必须通过手动验证版本来获取支架式 Controller 逻辑,要么必须依靠Hibernate来完成其工作,而不是手动操作版本,这是不可行的。
关于hibernate - Hibernate OptimisticLockingFailureException应该不会抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626757/
触发OptimisticLockingFailureException的代码: @Test public void shouldIncrementUserTotalLikesByOne() throw
我在我的应用程序中遇到 org.springframework.dao.OptimisticLockingFailureException:尝试使用错误版本 (0) 更新步骤执行 id=xxx,其中当
我已将 Hibernate 升级到 5.2.3,然后我在 Spring Batch 作业中收到 org.springframework.dao.OptimisticLockingFailureExce
我正在开发 Spring Batch 示例 - XML 文件到 MongoDB 数据库。我开发了所有必需的代码,但是当尝试运行主代码时,它失败了,不知道为什么?任何帮助深表感谢。我正在使用 mongo
我是一名优秀的程序员,十分优秀!