Spring Boot Graphql没有适合我的查询的解析器

rjee0c15  于 2023-04-11  发布在  Spring
关注(0)|答案(1)|浏览(208)

尝试做一个简单的图形查询,假设给予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()
}
7jmck4yq

7jmck4yq1#

发现我犯了一个“愚蠢”的错误。
findByGameId方法中,在参数中我忘记添加@Argument注解,一旦我添加它,它就解决了。

相关问题