简体   繁体   English

Spring 启动未知列 'INNER。 '顺序子句

[英]Spring Boot unknown column 'INNER. ' in order clause

I am using Spring Data JPA to get data from a MySQL database.我正在使用 Spring Data JPA 从 MySQL 数据库中获取数据。 I have this function adnotated with @Query in a repository我在存储库中用 @Query 注释了这个 function

@Query(value = "SELECT * FROM  Treatments INNER JOIN Animals ON Treatments.animal_id = Animals.animal_id WHERE Animals.owner_id = ?1 AND Treatments.enddate > curdate()", nativeQuery = true)
        Page<Treatments> findAll(@Param("ownerId") Optional<Owner> owner, Pageable pageable);

Spring generates the SQL as it is, then adds order by INNER.startdate asc limit? Spring 按原样生成 SQL,然后order by INNER.startdate asc limit? And then it throws this error Unknown column 'INNER.startdate' in 'order clause' Why is this happening?然后它抛出这个错误Unknown column 'INNER.startdate' in 'order clause' Why is this happening? I tried adding an orderby clause myself but it will just add its own orderby clause anyway and throw the error.我尝试自己添加一个 orderby 子句,但无论如何它只会添加自己的 orderby 子句并抛出错误。 The query works inside MySql.该查询在 MySql 内部有效。

I suppose Spring modifies your query because you use Page as the return type.我想 Spring 会修改您的查询,因为您使用Page作为返回类型。 When you use a native query together with Page , you should add a countQuery , see Spring Documentation .当您将本机查询与Page一起使用时,您应该添加一个countQuery ,请参阅Spring 文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM