ORA-00918:列模糊定义我收到此错误

时间:2015-09-28 04:41:39

标签: sql oracle hibernate

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中执行。

1 个答案:

答案 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中添加了别名,以便查询结果有两个不同的列。