我的以下本机查询不起作用:
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/