spring 带有子查询的数据 jpa 分页不起作用
spring data jpa pagination with sub query not woking
下面是运行良好的查询
@Query("SELECT city.id as id,city.latitude as latitude, city.longitude as longitude, \n" +
"(SELECT cityTrans.name " +
" FROM city.listOfCityTrans as cityTrans " +
" WHERE cityTrans.languageId=:languageId AND cityTrans.cityId=city.id)" +
" AS name, \n" +
"(SELECT provinceTrans.name " +
" FROM city.province AS province JOIN province.listOfProvinceTrans AS provinceTrans " +
" WHERE provinceTrans.languageId=:languageId AND provinceTrans.provinceId=city.provinceId)" +
" AS provinceName, \n" +
"(SELECT countryTrans.name " +
" FROM city.province AS province JOIN province.country.listOfCountryTrans AS countryTrans " +
" WHERE countryTrans.languageId=:languageId AND countryTrans.countryId=city.provinceId)" +
" AS countryName, province.id as provinceId,province.countryId as countryId \n" +
" FROM City as city")
Page<CitySummary> findCities(@Param("languageId") Integer languageId, Pageable pageable);
但是当我传递排序参数时 ?sort=name
然后它正在创建错误的查询
SELECT city.id as id,city.latitude as latitude, city.longitude as longitude,
\n(SELECT cityTrans.name FROM city.listOfCityTrans as cityTrans WHERE
cityTrans.languageId=:languageId AND cityTrans.cityId=city.id) AS name,
\n(SELECT provinceTrans.name FROM city.province AS province JOIN
province.listOfProvinceTrans AS provinceTrans WHERE
provinceTrans.languageId=:languageId AND
provinceTrans.provinceId=city.provinceId) AS provinceName, \n(SELECT
countryTrans.name FROM city.province AS province JOIN
province.country.listOfCountryTrans AS countryTrans WHERE
countryTrans.languageId=:languageId AND
countryTrans.countryId=city.provinceId) AS countryName, province.id as
provinceId,province.countryId as countryId \n FROM
com.pro.api.model.City as city order by cityTrans.name asc
^
谁能告诉我为什么会这样?
我认为 MVC 到 JPA 路径仅适用于实体定义,不适用于 Object[]
结果,因此如果您的 City
实体没有 name
属性 ,然后 JPA 将尝试查找另一个字段匹配项,即 cityTrans
下面是运行良好的查询
@Query("SELECT city.id as id,city.latitude as latitude, city.longitude as longitude, \n" +
"(SELECT cityTrans.name " +
" FROM city.listOfCityTrans as cityTrans " +
" WHERE cityTrans.languageId=:languageId AND cityTrans.cityId=city.id)" +
" AS name, \n" +
"(SELECT provinceTrans.name " +
" FROM city.province AS province JOIN province.listOfProvinceTrans AS provinceTrans " +
" WHERE provinceTrans.languageId=:languageId AND provinceTrans.provinceId=city.provinceId)" +
" AS provinceName, \n" +
"(SELECT countryTrans.name " +
" FROM city.province AS province JOIN province.country.listOfCountryTrans AS countryTrans " +
" WHERE countryTrans.languageId=:languageId AND countryTrans.countryId=city.provinceId)" +
" AS countryName, province.id as provinceId,province.countryId as countryId \n" +
" FROM City as city")
Page<CitySummary> findCities(@Param("languageId") Integer languageId, Pageable pageable);
但是当我传递排序参数时 ?sort=name
然后它正在创建错误的查询
SELECT city.id as id,city.latitude as latitude, city.longitude as longitude,
\n(SELECT cityTrans.name FROM city.listOfCityTrans as cityTrans WHERE
cityTrans.languageId=:languageId AND cityTrans.cityId=city.id) AS name,
\n(SELECT provinceTrans.name FROM city.province AS province JOIN
province.listOfProvinceTrans AS provinceTrans WHERE
provinceTrans.languageId=:languageId AND
provinceTrans.provinceId=city.provinceId) AS provinceName, \n(SELECT
countryTrans.name FROM city.province AS province JOIN
province.country.listOfCountryTrans AS countryTrans WHERE
countryTrans.languageId=:languageId AND
countryTrans.countryId=city.provinceId) AS countryName, province.id as
provinceId,province.countryId as countryId \n FROM
com.pro.api.model.City as city order by cityTrans.name asc
^
谁能告诉我为什么会这样?
我认为 MVC 到 JPA 路径仅适用于实体定义,不适用于 Object[]
结果,因此如果您的 City
实体没有 name
属性 ,然后 JPA 将尝试查找另一个字段匹配项,即 cityTrans