【问题标题】:spring data jpa pagination with sub query not woking带有子查询的spring数据jpa分页不起作用
【发布时间】:2018-05-18 02:37:17
【问题描述】:

下面是运行良好的查询

 @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
                                        ^

谁能说出为什么会这样?

【问题讨论】:

    标签: java sql spring-boot spring-data-jpa hql


    【解决方案1】:

    我认为 MVC 到 JPA 的路径仅适用于实体定义,而不适用于 Object[] 结果,因此如果您的 City 实体没有 name 属性,那么 JPA 会尝试查找另一个字段匹配,这将是cityTrans

    【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2021-09-17
    • 2018-01-27
    • 2015-11-26
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多