gpt4 book ai didi

java - 我使用 @Query 和 Pageable 有错误 : Variables are only allowed when ordering by an expression referencing a column name

转载 作者:行者123 更新时间:2023-12-01 16:42:14 25 4
gpt4 key购买 nike

我尝试查询:

 @Query(value = "SELECT * FROM BookingOffice WHERE tripId in (select Trip.tripId from Trip Where Trip.desfination like ?#{#desfination})   ORDER BY ?#{#pageable}",
countQuery = "SELECT COUNT(*) FROM BookingOffice WHERE tripId in (select Trip.tripId from Trip Where Trip.desfination like ?#{#desfination})",
nativeQuery = true)
public Page<BookingOffice> findAllByTrip(String desfination, Pageable pageable);

我的页面请求:

Sort sort = new Sort(Direction.DESC, "officeId");
PageRequest pageRequest = new PageRequest(page, 7, sort);

运行时的 Hibernate 查询

**> hibernate :

SELECT
*
FROM
BookingOffice
WHERE
tripId in (
select
Trip.tripId
from
Trip
Where
Trip.desfination like ?
)
ORDER BY
?,
officeId desc offset 0 rows fetch next ? rows only**

错误:2020 年 5 月 17 日 12:41:29 PM org.apache.catalina.core.StandardWrapperValve 调用严重:路径 [/CarPark] 上下文中 servlet [dispatcher] 的 Servlet.service() 引发异常 [请求处理失败;嵌套异常是 org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取 ResultSet; SQL [不适用];嵌套异常是 org.hibernate.exception.SQLGrammarException: 无法提取 ResultSet] 其根本原因com.microsoft.sqlserver.jdbc.SQLServerException:由 ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。仅当通过引用列名的表达式进行排序时才允许使用变量。 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608) 在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243) 在com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218) 在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:434) 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60) 在 org.hibernate.loader.Loader.getResultSet(Loader.java:2171) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1934) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1896) 在 org.hibernate.loader.Loader.doQuery(Loader.java:936) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:339) 在 org.hibernate.loader.Loader.doList(Loader.java:2693) 在 org.hibernate.loader.Loader.doList(Loader.java:2676) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2510) 在 org.hibernate.loader.Loader.list(Loader.java:2505) 在 org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338) 在 org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2262) 在org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1069) 在 org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:173) 在 org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1529) 在 org.hibernate.query.Query.getResultList(Query.java:165) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) ....

**My database**

请帮助我!谢谢

最佳答案

我认为问题是您在选择查询的 order by 子句中使用 Pageable 对象。它需要一个列名来对结果进行排序。

关于java - 我使用 @Query 和 Pageable 有错误 : Variables are only allowed when ordering by an expression referencing a column name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61840345/

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