我们有以下DAO堆栈:
如何指定OpenJPA在查询末尾添加WITH UR
sql子句?
我几天都浏览过网站和手册,应该是这样的:
Query q = em.createQuery("select m from Magazine m where ... ");
q.setHint("openjpa.FetchPlan.ReadLockMode","WRITE");
List r = q.getResultList();
但是唉,我一直无法找到一个工作的OpenJPA属性,它将作为setHint()
参数传递并产生WITH UR
作为结果,所以我使用SpringJDBC查询,遗憾的是我无法使用不再。
有什么想法吗?非常感谢你
答案 0 :(得分:4)
OpenJPA不支持在JPQL中使用WITH UR
子句。您始终可以使用native query来实现此功能。
答案 1 :(得分:0)
我现在遇到了类似的问题 - 看起来似乎是设置:
query.setHint("openjpa.FetchPlan.Isolation", "READ_UNCOMMITTED");
会做到这一点。不幸的是,源代码显示永远不会读取来自withURClause
的常量org.apache.openjpa.jdbc.sql.DB2Dictionary
。
此外,如果查询不是FOR UPDATE
,OpenJPA 从不会考虑提取计划提示。我有一个select语句在独占锁上被阻止,它可以真正用于未提交的数据 - 与OpenJPA无关。