SELECT
c.CONSOL_INVOICE,
cu.name,
cu.CUST_CODE,
c.bu_name,
cLang.name
FROM CONSL_INV c
LEFT JOIN customers cu ON c.cust_code = cu.CUST_CODE,
customers_lang cLang
WHERE
upper(cLang.NAME) LIKE ?
AND upper(cLang.LANGUAGE_CD) = ?
AND c.CUST_CODE = cLang.CUST_CODE
此查询在Oracle Sql Developer中正确执行,但它不在hibernate中执行。
它出现以下错误:
“ORA-00918:列模糊定义”
我知道这是因为多个列具有相同的名称,但我已经正确完成但仍然不知道为什么它没有在hibernate中执行。
答案 0 :(得分:0)
正如其他人建议使用别名:
select c.consol_invoice
,cu.name as name1
,cu.cust_code
,c.bu_name
,clang.name as name2
from consl_inv c
left join customers cu
on c.cust_code = cu.cust_code, customers_lang clang
where upper(clang.name) like ?
and upper(clang.language_cd) = ?
and c.cust_code = clang.cust_code
正如您所看到的,我已在所选列cu.name和clang.name中添加了别名,以便查询结果有两个不同的列。