我正在使用下面的@Query
批注从MS-SQL获取前几条记录。显示错误,提示“ <操作符>或预期的AS ...”
@Query("SELECT Top 1 * FROM NEVS010_VEH_ACTV_COMMAND C WHERE C.EVS014_VIN = :vin ORDER BY C.EVS010_CREATE_S DESC")
CommandStatus findCommandStatusByVinOrderByCreatedTimestampDesc(@Param("vin") String vin);
答案 0 :(得分:3)
您还可以使用Docs中提到的findFirst和findTop:
findFirstByVinOrderByCreatedTimestampDesc(String vin)
答案 1 :(得分:1)
由于查询是SQL(而不是JPQL),因此需要在注释中设置nativeQuery = true
:
@Query(nativeQuery = true, value = "SELECT Top 1 * FROM NEVS010_VEH_ACTV_COMMAND C WHERE C.EVS014_VIN = :vin ORDER BY C.EVS010_CREATE_S DESC")
CommandStatus findCommandStatusByVinOrderByCreatedTimestampDesc(@Param("vin") String vin);
答案 2 :(得分:0)
对于不使用nativeQuery的自定义查询,可以使用字段ROWNUM
。
Ex(在Kotlin中,但相同的想法在Java中也有效):
@Query("""
SELECT a
FROM Account a
WHERE a.bla = :ble
AND ROWNUM = 1
ORDER BY a.modifiedDate DESC
""")
fun findWhatever(@Param("ble") someParam: String)
到目前为止,我还没有在任何文档上找到它。我刚刚测试过,它适用于Oracle,MySQL和H2