gpt4 book ai didi

java - 从 Hibernate 3 迁移到 4 后 SQL 别名不再工作

转载 作者:行者123 更新时间:2023-11-30 11:16:40 25 4
gpt4 key购买 nike

我正在将 Struts2 Web 应用程序从 Hibernate V3 迁移到 Hibernate 4.3.5。

在 Hibernate V3 中,我们使用了如下 SQL 语句,它们运行良好:

select u.id as id, 
u.userId as userId,
sum(u.totalSearchedFields) as total,
u.date as date,
u.status as status
from user u;

迁移到Hibernate V4.3.5后,上述SQL语句显示错误:

org.hibernate.QueryException: , expected in SELECT

我们通过从 SQL 语句中删除别名使其工作,如下所示:

select u.id, 
u.userId,
sum(u.totalSearchedFields),
u.date,
u.status
from user u;

有人知道这是什么原因吗?如何在不删除别名的情况下解决此问题?

最佳答案

显然,根据 Hibernate 4 developer guide ,别名应该以与您之前所做的相反的方式使用:

SELECT <PROPERTY_NAME> AS <ALIAS_TABLE.PROPERTY_NAME> 
FROM TABLE AS <ALIAS_TABLE>

所以尝试改变这个:

select u.id as id, 
u.userId as userId,
sum(u.totalSearchedFields) as total,
u.date as date,
u.status as status
from user u;

为此:

select id as {u.id},
userId as {u.userId},
sum(totalSearchedFields) as total,
date as {u.date},
status as {u.status}
from user u;

该方法似乎与 SQL 的方法有点不同,因为此别名旨在供 Hibernate 使用以防止具有相同名称的多个列发生冲突,而在 SQL 中,它们用于生成用户友好的结果集。

远景顺便说一句,希望对您有所帮助。

关于java - 从 Hibernate 3 迁移到 4 后 SQL 别名不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com