默认类型解析程序找不到适用于GraphQL类型`ArrayList的Java类型.提供一个@DgsTypeResolve



我有一个使用netflix的graphql和DGS的java-Spring Boot项目。我有以下查询:

type Query {
ticketingHistory(ticketId: String): TicketingHistory
}
interface TicketingHistory {
ticketId: String
createdOn: String
}
type TicketingEmail implements TicketingHistory {
ticketId: String
createdOn: String
emailId: String
processInstanceId: String
createdBy: EmailCreatedBy
mailFrom: String
to: String
cc: String
bcc: String
messageId: String
messageInReplyTo: String
messageReferences: String
subject: String
messagePlain: String
messageHtml: String
}
type TicketingComment implements TicketingHistory {
ticketId: String
commentId: String
userId: String
createdOn: String
taskId: String
message: String
}

和数据提取器:

@DgsComponent
@RequiredArgsConstructor
@Slf4j
public class TicketingHistoryDataFetcher {
private final EmailService emailService;
private final ProcessInstanceService processInstanceService;
@DgsQuery
public List<? extends TicketingHistory> ticketingHistory(@InputArgument String ticketId) {
List<TicketingHistory> ticketingHistories = new ArrayList<>();
final Set<Email> emails = emailService.findAll(ticketId);
final List<CommentDTO> comments = processInstanceService.getComments(ticketId);
emails.stream()
.filter(Objects::nonNull)
.forEach(email -> ticketingHistories.add(ticketingEmail(email)));
comments.stream()
.filter(Objects::nonNull)
.forEach(comment -> ticketingHistories.add(ticketingComment(comment, ticketId)));
ticketingHistories.sort(Comparator.comparing(TicketingHistory::getCreatedOn));
return ticketingHistories;
}
}

当从邮递员那里调用它并调试它时,我可以看到这个查询被调用了,我正在获取数据,但当它试图返回列表时,它失败了:

com.netflix.graphql.dgs.exceptions.InvalidTypeResolverException: The default type resolver could not find a suitable Java type for GraphQL type `ArrayList. Provide a @DgsTypeResolver.`

看起来缺少Resolver。检查您是否有TicketingEmail和TicketingComment类(根据文档,拼写应与类型名称相同(,或者您是否应该有一个解析器(请参阅以下文档中的示例解析器(。https://netflix.github.io/dgs/advanced/type-resolvers-for-abstract-types/

最新更新