我想在spring中加入一些带有原生查询的表。查询如下:
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 [id]。我可以用using注释修复第二个表,但是表的id是实体,我真的不想更改它们的名称.
有什么建议吗?还是说是个冬眠虫?
干杯,尼可拉斯
编辑:为了澄清:我收到的第一个错误消息是这个Encountered a duplicated sql alias [arw_id] during auto-discovery of a native-sql query; nested exception is 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并得到以下错误:Encountered a duplicated sql alias [id] during auto-discovery of a native-sql query; nested exception is org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasExce[...]
发布于 2022-08-18 15:11:33
您真的需要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做同样的处理呢?
https://stackoverflow.com/questions/73405061
复制相似问题