我的以下本机查询不起作用:

Query createNativeQuery = entityManager.createNativeQuery(
   "select id from cscache where id=? for update ");


环境详细信息:


的MySQL 5.6
Jboss 5.1
JPA 1.0


错误:


  2014-12-12 10:20:14,581警告[org.hibernate.util.JDBCExceptionReporter]
  
  SQL错误:1064,SQLState:42000(http-0.0.0.0-8543-3 :)
  
  2014-12-12 10:20:14,581错误[org.hibernate.util.JDBCExceptionReporter]
      您的SQL语法有误。检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以便在第1行的“限制2”附近使用(http-0.0.0.0-8543-3 :)

最佳答案

我实际上并没有在休眠状态下进行更新,但是我相信您可以(并且应该?)在Session或查询对象上进行更新。为什么不让休眠做它而不执行本地查询呢?
根据有关锁定的文档(Chapter 5: Locking,您可以在会话或查询上设置锁定模式。

Cscache  cscache  = (Cscache )session.get( Cscache.class, id, LockOptions.UPGRADE );


指定LockOptions应该导致执行SELECT ... FOR UPDATE。

关于java - 选择更新不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27446755/

10-09 09:40