错误提示:
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by ol.createTime desc' at line 1
显示:
翻译:
错误说明:jpa中使用@Query时,无法使用limit;
解决办法:
// 获取最近的指定条数的操作日志 // 不支持limit,需要加上nativeQuery = true,保持原生query语句(先在数据库中执行,然后再写到这里) //SELECT * FROM yuanlrc_operator_log ORDER BY create_time DESC LIMIT 1,:size 在mysql中运行,如果能够正常运行,那么直接填入即可 @Query(value = "SELECT * FROM yuanlrc_operator_log ORDER BY create_time DESC LIMIT 1,:size ",nativeQuery = true) List<OperatorLog> findLasttestLong(@Param("size") int size);
说明:
@Query(nativeQuery=true,value = "")
value里写正常sql语句
如果返回的是数据库对应的实体对象,那么sql的返回结果集字段别名中应该与该实体类中对应的数据库字段名一致,可以有多余字段,但不能少字段
其中加上nativeQuery=true; 表示输入的是原生sql语句,支持limit函数,在sqlyog中正常运行即可
不加上nativeQuery=true; ;是JPQL,不支持limit函数