微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Grails使用executeUpdate进行悲观锁定

如何解决Grails使用executeUpdate进行悲观锁定

| 我在grails中找不到有关如何通过executeUpdate()命令使用悲观锁定的任何信息。这可能吗? [更新]根据Burt的建议,这是我得到的结果查询。请注意,由于此选项不存在,因此我使用了不赞成使用的UPGRADE而不是pessimistic_WRITE。
def session = sessionFactory.currentSession
def query = session.createquery(\"UPDATE SensorProcessed s SET s.batch=:batch WHERE s.device.id=:deviceid AND s.batch.id=:batchId AND s.sensor.id=:sensorId AND s.rollupKey=:rollupKey\")
    query.setLockMode (\"s\",LockMode.UPGRADE)
    query.setParameter(\"batch\",ignored)
    query.setParameter(\"deviceid\",device.id)
    query.setParameter(\"batchId\",batch.id)
    query.setParameter(\"sensorId\",sensor.id)
    query.setParameter(\"rollupKey\",rollupKey)
    def updatedRows = query.executeUpdate()
谢谢, 亚伯拉罕     

解决方法

        它不受支持,但是足够简单,可以访问Hibernate API并在其中使用它。将会话工厂的依赖项注入添加到您的服务或控制器中:
def sessionFactory
然后在您的方法中,用常规的Hibernate更新替换executeUpdate调用:
def session = sessionFactory.currentSession
def query = session.createQuery(\"your HQL\")
query.setLockMode alias,LockMode.PESSIMISTIC_WRITE
// set query variable values
query.executeUpdate()
    ,        我刚刚看到了这个: http://grails.org/doc/latest/guide/single.html#5.3.5悲观和乐观锁定 请注意,您必须确保您的数据库支持悲观锁定。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。