sur*_*uri 0 sql-server hibernate spring-data-jpa
任何人都可以让我知道,如何使用 spring 数据 JPA 检索特定列的最大值。
我一直在尝试使用 spring 数据 JPA 参考文档中给出的 findTopByOrderByIdDesc 方法,但我得到“'limit'异常附近的语法不正确。
来自 spring 数据 JPA 的方法签名是
用户 findTopByOrderByAgeDesc();
并且我正在尝试使用相同的方法签名,这里该方法不希望传递任何参数,但根据可以的异常,我传递了限制。
甚至我尝试将方法名称更改为 User findTop1ByOrderByIdDesc();
但这确实有效。我不想使用 @Query("some query")
public User getmaxSequence() {
User user=new User();
try {
user= userRepository.findTopByOrderByIdDesc();
}catch(Exception e) {
e.printStackTrace();
}
return user;
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我低于异常堆栈跟踪。
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'limit'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:434)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)
... 150 more
Run Code Online (Sandbox Code Playgroud)
您必须在 application.properties 中设置 Hibernate 方言:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
Run Code Online (Sandbox Code Playgroud)