我的以下本机查询无法正常工作:
Query createNativeQuery = entityManager.createNativeQuery(
"select id from cscache where id=? for update ");
环境详细信息:
错误:
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或查询对象上进行更新。为什么不让冬眠做它而不是执行本机查询呢?根据有关锁定的文档(第5章:锁定),您可以在会话或查询上设置锁定模式。
Cscache cscache = (Cscache )session.get( Cscache.class, id, LockOptions.UPGRADE );
指定LockOptions应该导致执行SELECT ... FOR UPDATE。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句