我们可以为JPA NamedQueries分配自定义查询提示

Edd*_*die 5 database db2 jpa openjpa query-hints

我们需要将查询号附加到应用程序执行的每个查询中.

EX:SELECT*FROM ... WHERE ... QUERYNO 123456 ;

OpenJPA支持查询提示,但仅针对特定实现的特定提示.

...
Query q = em.createQuery("select m from Magazine m where ... ");
q.setHint("openjpa.hint.OptimizeResultCount", new Integer(2));
q.setHint("openjpa.FetchPlan.ReadLockMode","WRITE");
List r = q.getResultList();
...
Run Code Online (Sandbox Code Playgroud)

但是根据JPA规范和openjpa" 忽略了无法由特定数据库处理的无效提示或提示.否则,无效提示将导致抛出ArgumentException." 因此,将"QUERYNO"指定为提示似乎没有任何影响.

如何创建自定义查询提示以在运行时指定?

...查询q = em.createQuery("从杂志m中选择m ......"); q.setHint(" com.me.CustomQueryNoHint ",new Integer(2234)); 列表r = q.getResultList(); ...

Ric*_*ick 0

指定“QUERYNO”作为提示似乎没有影响。

正确的。根据您引用的文档,“QUERYNO”是无效提示,因此会被忽略。该文档有点令人困惑,但我相信可以解释为支持您观察到的行为。:-)

如何创建自定义查询提示以在运行时指定?

这是一项更高的任务。我不认为 OpenJPA 的设计目的是允许编写自定义查询提示。

我更多地考虑了您想要将特定字符串附加到每个 SQL 的实际问题,我认为在 OpenJPA 中这不是很容易做到的。也许您可以为您的 JDBC 驱动程序编写一个包装器,并将其附加到每个 SQL 中?