You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Webflux GraphQL应用游标分页ConnectionAdapter异常排查

GraphQL游标分页异常排查求助:No ConnectionAdapter for User实体

我在基于Webflux的响应式应用中实现了GraphQL控制器,原本运行正常。为了按照GraphQL官方标准添加游标分页,我参考Spring GraphQL 1.2.6文档,将Spring Boot版本升级至3.2.4,并完成了以下修改:

  • 根查询从users(count: Int, offset: Int, companyId: ID): [User]!修改为users(first:Int, after:String, last:Int, before:String, companyId: ID): UserConnection
  • 控制器方法调整为返回Mono<Window<User>>,接收ScrollSubrange等参数
  • 服务层与仓储层适配返回Window<User>类型

调试过程中查询参数传递正常,但执行查询时抛出异常:

java.lang.IllegalStateException: No ConnectionAdapter for: com.tierra.suite.userservice.model.entity.user.User

异常发生在ConnectionFieldTypeVisitor.ConnectionDataFetcher#adaptDataContainer方法处。我已经提供了Window类的ConnectionAdapter,却仍出现该异常,希望得到排查方案。

相关代码片段

控制器代码

@QueryMapping
public Mono<Window<User>> users(@Argument UUID companyId,
                               ScrollSubrange subRange,
                               @AuthenticationPrincipal Principal principal) {
    return userService.getUsers(principal, companyId, subRange, Sort.by("username"));
}

服务层代码

public Mono<Window<User>> getUsers(@NotNull Principal principal, UUID companyId, ScrollSubrange subRange, Sort sort) {
    ScrollPosition position =  subRange.position().orElse(ScrollPosition.offset());
    Limit limit= Limit.of(subRange.count().orElse(100));
    Objects.requireNonNull(principal);
    return visibilityService.findVisibleUsers(principal, User.class)
        .collectList()
        .flatMap(list -> userRepository.findByIdIn(list, position, limit, Sort.by("username")));
}

仓储层方法定义

Mono<Window<User>> findByIdIn(Collection<UUID> uuid, ScrollPosition position, Limit limit, Sort sort);

User实体类核心代码

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="users")
@JsonIgnoreProperties(ignoreUnknown = true)
@SchemaMapping
public class User extends X implements OAuthUser, Y, Persistable<UUID> {
    @Id
    private UUID id;
    private String username;
    // 其他字段...
}

内容的提问来源于stack exchange,提问作者CptWasp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:55:14