Java教程

006 在jpa中,@Query使用limit时出错

本文主要是介绍006 在jpa中,@Query使用limit时出错,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

错误提示:

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函数

 

这篇关于006 在jpa中,@Query使用limit时出错的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!