Spring Data JPA@QueryカスタムSQL MySQL実行報unexpected token:limit異常の解決

881 ワード

エラーのコードは次のとおりです.
@Query(value = "select sum(minutes) as minutes from t_zz_records where year(date)>=:min and year(date)<=:max group by date order by minutes desc limit 0, 1")
public float getMaxSumOfDateInYear(@Param(value = "min") int minYear, @Param(value = "max") int maxYear);

MySQLでエラーメッセージを実行:
antlr.NoViableAltException: unexpected token: limit

なぜならlimitはMySQL固有の特性であり、@Queryはデフォルトでは汎用SQLのみを受け入れているからです.
解決策はnativeQuery=trueを単純に加えればよい.次のようになります.
@Query(value = "select sum(minutes) as minutes from t_zz_records where year(date)>=:min and year(date)<=:max group by date order by minutes desc limit 0, 1", nativeQuery = true)
public float getMaxSumOfDateInYear(@Param(value = "min") int minYear, @Param(value = "max") int maxYear);