停用Hibernate NonUniqueDiscoveredSqlAliasException的本機連線查詢
P粉852114752
P粉852114752 2024-02-21 13:50:47
0
1
445

我想在 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粉852114752
P粉852114752

全部回覆(1)
P粉546138344

您確實想要來自 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 執行相同的操作?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板