我想在 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[...]
您確實想要來自
employee
、c
、b
和a
的所有欄位嗎? 您將結果轉換成什麼?如果您要將其轉換為
Employee
類,只需使用是什麼讓您確信您收到的錯誤是由於
id
和arw_id
造成的? 它們是不同的字段,它們不應該給您所提到的錯誤。或者這很可能是因為您的c
或b
或a
中具有相同的列名稱 在這種情況下,您的列名稱會變得不明確。如果您可以向我們展示您正在使用此查詢的一段程式碼,情況會更清楚
編輯 正如我所看到的,您所做的只是使用
USING
而不是ON
。這表示您在兩個表之間共用您的arw_id
,這將消除結果集中arw_id
的重複出現。 如果這與您的 id 的情況相同,為什麼不對您的id
執行相同的操作?