我正在使用一条本地 SQL 查询,其中我加入了三次球员表,第一次是为了获取击球手的姓名,然后是获取投球手的名称和获取守垒手的名字。现在第一个连接可以工作,但接下来的两个连接也返回相同的名称,即击球手的名称。
以下是 SQL 查询:
以下是 SQL 查询:
select
del.over_no ,
del.delivery_no ,
batsman.sname ,
outType.name ,
outBy.sname ,
fielder.sname ,
bep.runs,
bep.deliveries,
bep.fours,
bep.sixes
from delivery del
INNER JOIN batsman_performance bep ON del.innings_id=bep.innings_id
INNER JOIN ref_player batsman ON del.batsman_id = batsman.id
INNER JOIN ref_player outBy ON del.bowler_id = outBy.id
LEFT OUTER JOIN ref_player fielder ON del.fielder_id1= fielder.id
INNER JOIN ref_out_type outType ON del.out_type_id=outType.id
and del.out_type_id IS NOT NULL
and del.innings_id=:innings_id
and bep.player_id = del.batsman_id
order by over_no, delivery_no;
我没有为选定的列使用别名,因为当我这样做时,无论我使用哪个列的别名,Hibernate都会抛出异常。
请求处理失败;嵌套异常是javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法执行查询],根本原因是java.sql.SQLException:找不到列'over_no'。
当我在MySQL客户端上运行此查询并返回正确的数据集时,但当我在我的代码中运行它时,结果集会以某种方式覆盖ref_player表上的两个后续连接,使我在所有三个列(即batsman.sname、outBy.sname和fielder.sname列)中都得到击球手名称相同的结果。
我已经卡在这里两天了,请任何帮助都将是巨大的帮助。