在提示中引用表名(而不是别名)

时间:2015-12-03 14:14:22

标签: oracle jpa eclipselink hint table-alias

我使用eclipse链接作为JPA实现。我有一个像这样的命名查询:

@NamedQuery(name = "QueryName",
            query = "SELECT c FROM Customer c, AccountingUnit au where c.contract.state = :state AND ...")

生成的SQL查询实际上将查询4个表,这些表获得表别名t0,t1,t2,t3,如下所示:

SELECT ... FROM CUSTOMER t0, ACCOUNTING_UNIT t1, CUSTOMER_CONTRACT t2, ...

现在我想添加一个Oracle Hint,当我说:

query.setHint("eclipselink.sql.hint" , "/*+ USE_NL(t0 t2) */");

但我更愿意这样写:

query.setHint("eclipselink.sql.hint" , "/*+ USE_NL(Customer Customer_Contract) */");

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

使用别名时恕我直言Oracle只会在包含这些别名时使用提示。

我怀疑EclipseLink甚至试图区分各种提示。提示中的单词也可以是索引名称或某个魔术常量。

最好的方法是检查EclipseLink源代码。