当前位置: 首页 > 知识库问答 >
问题:

GraphQL服务器未启动的Spring Boot

封弘伟
2023-03-14
type Person {
    id: ID
    name: String!
    contact: Contact
}

type Query {
    countPersons: Long!
    findByName(name: String!): [Person]!
    findAllPerson: [Person]!
}

type Contact {
    id: ID
    emailId: String
    mobileNumber: String!
}

extend type Query {
    findAllContact: [Contact]!
    countContacts: Long!
    findByMobileNumber(mobileNumber: String!): [Contact]!
    findByEmailId(emailId: String!): [Contact]!
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "persons")
public class Person extends BaseAbstractEntity {

    @Column(name="person_name", nullable = false)
    private String name;

    @OneToOne(fetch = javax.persistence.FetchType.LAZY)
    @JoinColumn(name = "contact_id", referencedColumnName = "id")
    private Contact contact;

}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "contacts")
public class Contact extends BaseAbstractEntity {

    @Column(name="contact_email_id")
    private String emailId;

    @Column(name="contact_mobile_number", nullable = false)
    private String mobileNumber;

    @OneToOne(mappedBy = "contact")
    private Person person;

}

public class Query implements GraphQLQueryResolver {

    private final PersonRepository personRepository;
    private final ContactRepository contactRepository;

    public Query(PersonRepository personRepository, ContactRepository contactRepository) {
        this.personRepository = personRepository;
        this.contactRepository = contactRepository;
    }

    public Iterable<Person> findAllPerson() {
        return personRepository.findAll();
    }
}

启动服务器时获取错误:

通用域名格式。柯萨托德夫。图ql。工具。SchemaClassScannerError:无法将类型定义(非NullType{type=ListType{type=TypeName{name='Person'}}}})与java类型(类com.demo.graphql.entities.Person)匹配:java类不是列表或泛型类型信息丢失:类com。演示。图ql。实体。人

在查询中注释掉findByNamefindAllPersonfindAllPerson后,应用程序启动:

type Query {
    countPersons: Long!
    # findByName(name: String!): [Person]!
    # findAllPerson: [Person]!
}

我认为问题在于查询响应中的[Person],它是一个Person列表。

链接到应用程序:https://github.com/shubham-v/spring-boot-graphql-demo/

共有1个答案

曹和正
2023-03-14

查看共享回购协议:

public Person findByName(String name) {
    return personRepository.findByName(name);
}

解析程序正在返回单个Person类对象,但架构需要Person列表。

尝试将架构更改为:

findByName(name: String!): Person!
 类似资料:
  • 我也试着跟着索尔。 elasticsearch无法在ubuntu 15.10中启动服务

  • 我在eclipse中安装了Jboss应用服务器,但它没有启动。后来我删除了Jboss并安装了Glassfish服务器,它也没有启动。它们没有给出任何错误,但仍处于启动模式 例如:这是Jboss7的控制台状态。1.它没有继续下去 07:31:29699信息[org.jboss.modules]jboss模块版本1.1.1。GA 07:31:31256信息[org.jboss.msc]jboss ms

  • 我正在以下链接中使用sysdeo插件进行tomcat安装: http://technologicaloddity.com/using-projects/Java-projects/setting-up-the-sysdeo-tomcat-plug-in/ 由于我需要从我的spring mvc在tomcat中运行solrserver,所以我选择了上面的链接。 我配置了所有的东西,也做了solr wa

  • 我一直试图在我的docker容器中运行cron作业,但当容器启动时,我似乎无法让cron服务运行。我可以远程进入运行容器并运行“cron”以使服务在没有问题的情况下启动。我在我的DockerFile中包含了这个,为什么命令没有被执行呢? Docker-compose.yml

  • 启动服务器时,出现以下错误:无法启动服务器。 localhost上的服务器GlassFish Server Open Source Edition 3(Java EE 6)无法启动。

  • Jenkins作为一项windows服务,已经运行了几个月,没有出现任何问题。 我做了一些Jenkins更新(将一个更新的.war文件复制到.Jenkins文件夹),也进行了一些windows更新。我的版本是Jenkins 2.263.3。 我浏览了很多文档和其他StackOverflow票据,发现JENKINS_HOME环境变量缺失。我加了这个。 这是我的调查揭示的。 设置Java环境变量-见下