Spring boot 在SpringBoot中使用GraphqlJava时,我无法查询嵌套列表中的数据

Spring boot 在SpringBoot中使用GraphqlJava时,我无法查询嵌套列表中的数据,spring-boot,spring-data-jpa,graphql,graphql-java,Spring Boot,Spring Data Jpa,Graphql,Graphql Java,我刚刚开始探索graphql,所以我开始使用该框架解决初始问题。本文使用的代码托管在github@ 我的api的graphql模式如下所示: schema { query: Query } type Query { allCities: [City] city(name: String): City state(name: String): State } type City { name: String population: String state:

我刚刚开始探索graphql,所以我开始使用该框架解决初始问题。本文使用的代码托管在github@
我的api的graphql模式如下所示:

schema {
 query: Query
}

type Query {
 allCities: [City]
 city(name: String): City
 state(name: String): State 
}

type City {
    name: String
    population: String
    state: State
}

type State {
    name: String
    population: String
    country: Country
    cities : [City]
} 

type Country {
    name: String
    population: String
}
我试图执行的查询是-

{
  city(name: "BayArea") {
    name
    population
    state {
        name
        population
        cities  {
            name
        }
        country {
            name
            population
        }
    }
  }
}
我得到的结果是——

{
    "errors": [],
    "data": {
        "city": {
            "name": "BayArea",
            "population": "7200000",
            "state": {
                "name": "CA",
                "population": "39900000",
                "cities": [],
                "country": {
                    "name": "USA",
                    "population": "330000000"
                }
            }
        }
    },
    "extensions": null
}
问题在于这部分结果-

“人口”:“39900000”,
“城市”:[],
“国家”:{

我确实希望cities数组会相应地填充特定州的所有可用城市。

如果有人能指出问题是否与模式/查询或jpa映射有关,我们将不胜感激。如前所述,代码托管在github上@

迟回答总比不回答好

延迟抓取问题

您的问题来自您的事务管理。这种关系

public class State {

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="state")
    List<City> cities;

其他更好的解决方案包括告诉graphql java工具保持事务打开,直到返回响应,并在这个问题的公认答案中描述:

延迟回答总比没有回答好

延迟抓取问题

您的问题来自您的事务管理。这种关系

public class State {

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="state")
    List<City> cities;

其他更好的解决方案包括告诉graphql java工具保持事务打开,直到返回响应,并在这个问题的公认答案中描述:

我看到您使用的是graphql java工具及其早期版本。这些工件的命名非常混乱……但新版本在
com.graphql下-java kickstart
组id,因此您应该使用这些id。请注意,Kickstarter项目独立于graphql java(核心java库)团队,以及他们自己的。另外,您标记了graphql spqr,但您根本没有使用它。我看到您使用的是graphql java工具的一个古老版本及其工具。这些工件的命名非常混乱……但是新版本在
com.graphql java kickstart
组id下,因此您应该使用它们。请注意kicksarter项目独立于GraphQLJava(核心java库)团队,也独立于他们自己的团队。