在提示中引用 table 个名称(不是别名)

referencing table names (not aliases) in hints

我正在使用 Eclipse link 作为 JPA 实现。我有一个这样的命名查询:

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

生成的 SQL 查询实际上将查询 4 ​​个 table 获得 table 别名 t0、t1、t2、t3 类似如下:

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

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

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

但我更愿意这样写:

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

有什么办法吗?

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

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

最好检查 EclipseLink 源代码。