禁用Hibernate NonUniqueDiscoveredSqlAliasException的本地连接查询
P粉852114752
P粉852114752 2024-02-21 13:50:47
0
1
446

我想在 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 执行相同的操作?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板