Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring数据jpa分页,子查询不工作_Java_Sql_Spring Boot_Spring Data Jpa_Hql - Fatal编程技术网

Java spring数据jpa分页,子查询不工作

Java spring数据jpa分页,子查询不工作,java,sql,spring-boot,spring-data-jpa,hql,Java,Sql,Spring Boot,Spring Data Jpa,Hql,下面是运行良好的查询 @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 c

下面是运行良好的查询

 @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);

有人能告诉我为什么会发生这种情况吗?

我认为MVC到JPA的路径只适用于实体定义,而不适用于
对象[]
结果,因此如果您的
城市
实体没有
名称
属性,JPA会尝试找到另一个字段匹配,哪一个是
cityTrans

你能建议一个纬度的解决方案吗?它也在
cityTrans
@GovindSingh中。我想你能做到这一点的唯一方法就是以某种方式进行投影。您将构建一个表示正在执行的选择的投影。然后,在应用程序内部选择之后会出现“排序”,您可能需要向排序参数添加一些详细信息,如
sort=city\u name
per
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
                                        ^