Spring boot 在SpringBoot中使用GraphqlJava时,我无法查询嵌套列表中的数据
我刚刚开始探索graphql,所以我开始使用该框架解决初始问题。本文使用的代码托管在github@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:
我的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库)团队,也独立于他们自己的团队。