我知道可以通过将版本设置为false来完全停用版本:
class Book {
…
static mapping = {
version false
}
}
但是,是否可以仅针对特定情况停用它?
域
class Book {
String author
}
当前行为
def BookInstance = Book.get(1)
println "version $BookInstance.version" //version 1
BookInstance.author = 'John'
BookInstance.save(flush:true)
println "version $BookInstance.version" //version 2
具体案例
def BookInstance = Book.get(1)
println "version $BookInstance.version" //version 1
//Do something to deactivate the update version
BookInstance.author = 'John'
BookInstance.save(flush:true)
println "version $BookInstance.version" //version 1
答案 0 :(得分:1)
我从未见过禁用暂时乐观锁定的选项。
如果这是一个选项,您可以执行本机更新:
首先将SessionFactory注入服务或控制器
def sessionFactory
然后在你的方法里面做这样的事情:
def sql = new Sql(sessionFactory.currentSession)
sql.execute("update BOOK set AUTHOR = 'john' where id = 1")
(我现在无法检查语法,但它可能会起作用)
答案 1 :(得分:0)
我认为你应该在hibernate中寻找alternative locking:
禁止您的应用程序更改设置的版本号 休眠。要人为增加版本号,请参阅 属性文档 LockModeType.OPTIMISTIC_FORCE_INCREMENT 或者 LockModeType.PESSIMISTIC_FORCE_INCREMENT 检查Hibernate 实体管理器参考文档。
如果版本号由数据库生成,例如触发器, 使用注释 @ org.hibernate.annotations.Generated(GenerationTime.ALWAYS)。