Heim > Fragen und Antworten > Hauptteil
Ich möchte einige Tabellen mithilfe nativer Abfragen in Spring Boot verknüpfen. Die Abfrage sieht so aus:
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
Jetzt habe ich Entitäten in [id]
和 [arw_id]
上收到 Hibernate NonUniqueDiscoveredSqlAliasException。我可以使用 using
注释修复第二个,但是表的 id
und ich möchte ihre Namen wirklich nicht ändern...
Irgendwelche Vorschläge oder Fehler im Ruhezustand?
Cheers, Niklas
EDIT: Zur Klarstellung: Die erste Fehlermeldung, die ich bekam, war Encountered a duplicated sql alias [arw_id] during auto-discovery of a native-sql query;嵌套异常是 org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasExce[...]
.
Dann habe ich die Abfrage geändert in:
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
Und der folgende Fehler erscheint:
在自动发现本机 SQL 查询期间遇到重复的 sql 别名 [id];嵌套异常是 org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasExce[...]
P粉5461383442024-02-22 10:55:47
您确实想要来自 employee
、c
、b
和 a
的所有列吗?
您将结果转换成什么?
如果您要将其转换为 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
是什么让您确信您收到的错误是由于 id
和 arw_id
造成的?
它们是不同的字段,它们不应该给您所提到的错误。或者这很可能是因为您的 c
或 b
或 a
中具有相同的列名称
在这种情况下,您的列名称会变得不明确。
如果您可以向我们展示您正在使用此查询的一段代码,情况会更清楚
编辑
正如我所看到的,您所做的只是使用 USING
而不是 ON
。这意味着您在两个表之间共享您的arw_id
,这将消除结果集中arw_id
的重复出现。
如果这与您的 id 的情况相同,为什么不对您的 id
执行相同的操作?