gpt4 book ai didi

java - hibernate中的sql查询相当于什么

转载 作者:行者123 更新时间:2023-12-01 13:09:31 25 4
gpt4 key购买 nike

在 SQL Server 中我正在使用此查询

select * 
from Unit c
ORDER BY CONVERT(INT, LEFT(name, PATINDEX('%[^0-9]%', name + 'z')-1)) desc;

我希望在 Hibernate 中使用此查询。当我在 Hibernate 中使用它时出现错误

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException:unexpected token: LEFT near line 1, column 122     [SELECT c FROM models.entities.UnitEntity c WHERE c.expSetId = :expSetId AND isWaitArea=:isWaitArea ORDER BY CONVERT(INT, LEFT(name, PATINDEX('%[^0-9]%', name + 'z')-1)) asc]

最佳答案

其中一些内容不在 hibernate 方言中,您可以使用 substring 更改 left,使用 cast 更改 convert >。至于 patindex 我找不到替代品。您可以将路径索引添加到您使用的方言的构造函数中

registerFunction( "patindex", new StandardSQLFunction("patindex") );

或为存储过程创建 patindex()。

那么你可以使用这样的东西:

from Unit c order by cast(substring(name, 0, PATINDEX('%[^0-9]%', name + 'z')-1) as integer);

或者你可以使用locate()代替patindex(),但我认为它不支持正则表达式。

关于java - hibernate中的sql查询相当于什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22995951/

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