搜尋

首頁  >  問答  >  主體

停用Hibernate NonUniqueDiscoveredSqlAliasException的本機連線查詢

我想在 Spring Boot 中使用本機查詢連接一些資料表。 查詢如下所示:

SELECT * FROM employee AS e 
INNER JOIN c ON e.id = c.employee_id 
INNER JOIN b ON c.arw_id = b.arw_id 
INNER JOIN a ON b.ap_id = a.id

現在,我在 [id][arw_id] 上收到 Hibernate NonUniqueDiscoveredSqlAliasException。我可以使用 using 註解修復第二個,但是表的 id 是實體,我真的不想更改它們的名稱...

有什麼建議還是 Hibernate Bug?

乾杯, 尼克拉斯

編輯:為了澄清:我收到的第一個錯誤訊息是Encountered a duplicated sql alias [arw_id] during auto-discovery of a native-sql query;巢狀異常是org.hibernate.loader. custom.NonUniqueDiscoveredSqlAliasExce[...]。 然後我將查詢更改為:

SELECT * FROM employee AS e 
INNER JOIN c ON e.id = c.employee_id 
INNER JOIN b ON USING (arw_id) 
INNER JOIN a ON b.ap_id = a.id

並出現以下錯誤: 在自動發現本機 SQL 查詢期間遇到重複的 sql 別名 [id];巢狀異常是 org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasExce[...]

P粉852114752P粉852114752283 天前448

全部回覆(1)我來回復

  • P粉546138344

    P粉5461383442024-02-22 10:55:47

    您確實想要來自 employeecba 的所有欄位嗎? 您將結果轉換成什麼?

    如果您要將其轉換為 Employee 類,只需使用

    SELECT e.* FROM employee AS e 
    INNER JOIN c ON e.id = c.employee_id 
    INNER JOIN b ON c.arw_id = b.arw_id 
    INNER JOIN a ON b.ap_id = a.id

    是什麼讓您確信您收到的錯誤是由於 idarw_id 造成的? 它們是不同的字段,它們不應該給您所提到的錯誤。或者這很可能是因為您的 cba 中具有相同的列名稱 在這種情況下,您的列名稱會變得不明確。

    如果您可以向我們展示您正在使用此查詢的一段程式碼,情況會更清楚

    編輯 正如我所看到的,您所做的只是使用 USING 而不是 ON。這表示您在兩個表之間共用您的arw_id,這將消除結果集中arw_id 的重複出現。 如果這與您的 id 的情況相同,為什麼不對您的 id 執行相同的操作?

    回覆
    0
  • 取消回覆