尝试做一个简单的图形查询,假设给予id
,但它给我以下异常java.lang.IllegalStateException: Could not resolve parameter [0] in public com.vincent.graphqltutorial.entity.Game com.vincent.graphqltutorial.controller.GameController.findGameById(java.lang.Integer): No suitable resolver
我尝试调用的查询是
query ViewGame($gameId: Int!) {
game(id: $gameId) {
id
__typename
}
}
我把下面的graphql变量传入
{
"gameId":8779
}
在我的graphql模式中,我有
type Game{
id:Int!
// other fields but not got queried
}
type Query{
game(id:Int!):Game
}
在我的Game
实体中
@Data
@ToString
public class Game {
Integer id;
// other fields
}
在我的GameController.java
上,我用@QueryMapping
注解Map了它
@Controller
@Slf4j
public class GameController{
@Autowired
GameService gameService;
@QueryMapping(name="game")
public Game findGameById(Integer id){
log.info("Finding game with gameId {}", id);
return gameService.findGameById(id);
}
}
我还添加了@RestController
注解来检查我是否得到了初始设置,它返回了包含Game
对象详细信息的结果,但是它在graphql查询时失败了
项目版本:
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.1'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.vincent'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-graphql'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework:spring-webflux'
testImplementation 'org.springframework.graphql:spring-graphql-test'
}
tasks.named('test') {
useJUnitPlatform()
}
1条答案
按热度按时间7jmck4yq1#
发现我犯了一个“愚蠢”的错误。
在
findByGameId
方法中,在参数中我忘记添加@Argument
注解,一旦我添加它,它就解决了。