在提示中引用 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 源代码。
我正在使用 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 源代码。