【问题标题】:SELECT FOR UPDATE in hsqldb using hibernate使用休眠在 hsqldb 中选择 FOR UPDATE
【发布时间】:2013-08-05 19:41:18
【问题描述】:

当我使用 hibernate (4.2.3.Final) 在内存模式下对 hsqldb (1.8.0.7) 运行查询时 我得到以下异常

 java.sql.SQLException: Unexpected token: FOR in statement [SELECT *
 FROM MYTABLE where ID=? FOR UPDATE NOWAIT]     at
 org.hsqldb.jdbc.Util.throwError(Unknown Source)    at
 org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)   at
 org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)    at 
 ...

hsqldb 是否支持从更新中选择?

【问题讨论】:

    标签: java hibernate hsqldb


    【解决方案1】:

    在 2.3 文档的 updatability 部分中声明它以某种方式受到支持:

    如果使用 SQL 限定符 FOR UPDATE,那么所有可更新的 结果集的列变得可更新。

    但我无法在 1.8 的文档中找到它。我发现一些网站,比如this,说 SELECT FOR UPDATE 在 1.8 版本中不受支持。

    不支持并发迁移(以使 Flyway 集群安全) Hsql 1.8,因为这个版本不支持 SELECT ... FOR 更新锁定

    【讨论】:

      【解决方案2】:

      SELECT FOR UPDATE 在 HSQLDB 2.3.3 中已修复。

      不过,NOWAIT 将按照HSQLDB 2.3.3 NOWAIT 的说明进行修复

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 2011-04-05
        • 2011-04-22
        • 2010-11-23
        • 2021-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多