Spring boot 如何使用现成的标量类型的Spring Boot GraphQL Kickstart?Can';找不到用于对象域的类型名
根据这个博客:除了标准的GraphQL模式类型之外,这些都捆绑在spring boot GraphQL kickstart的依赖项中:Spring boot 如何使用现成的标量类型的Spring Boot GraphQL Kickstart?Can';找不到用于对象域的类型名,spring-boot,kotlin,graphql-java,Spring Boot,Kotlin,Graphql Java,根据这个博客:除了标准的GraphQL模式类型之外,这些都捆绑在spring boot GraphQL kickstart的依赖项中: scalar BigDecimal scalar BigInteger scalar Byte scalar Char scalar Short scalar Long 我需要Long,因此将scalar Long添加到我的模式文件中。 我还将其添加到我的查询返回类型中: type CharacterOutput { id: ID!, nam
scalar BigDecimal
scalar BigInteger
scalar Byte
scalar Char
scalar Short
scalar Long
我需要Long
,因此将scalar Long
添加到我的模式文件中。
我还将其添加到我的查询返回类型中:
type CharacterOutput {
id: ID!,
name: String!
age: Int!
bloodline: BloodlineOutput
villageId: ID!
timestamp: Long!
}
但是我在这里的数据类中使用什么作为类型呢
data class CharacterOutput(
val id: String,
val name: String,
val age: Short,
val bloodline: BloodlineOutput?,
val villageId: String?,
val timestamp: // << ?
)
数据类字符输出(
valid:String,
val name:String,
年龄:短,
瓦尔血统:血统输出?,
val villageId:字符串?,
val timestamp://根据graphql java kickstart引发的异常,问题在于graphql java kickstart没有注册标量“Long”
您可以按照此文档创建自定义标量,也可以将Scalars.GraphQLLong
GraphQLScalarType连接到模式解析器中
要创建自定义标量,需要两件事:
GraphQLScalarType的一个实例,该实例将把graphql输入强制到java表示中。多亏了GraphQLJava,这已经实现了很长时间了!我们将使用Scalars.GraphQLLong
SchemaParser bean:graphql java kickstart使用默认的SchemaParser,可以覆盖它来指定模式解析器选项、模式文件等
@Bean
public SchemaParser schemaParser() {
//Chose your SchemaParserOptions as documented here: https://www.graphql-java-kickstart.com/tools/schema-parser-options/
SchemaParserOptions schemaParserOptions = SchemaParserOptions.newOptions() //
.preferGraphQLResolver(true) //customize your options
.build();
return SchemaParser.newParser() //SchemaParserBuilder
.file("schema.graphqls") //Pick your schema files
.scalars(Scalars.GraphQLLong) //Set your custom scalars
.options(schemaParserOptions) //Set your schema parser options
.build();
}
根据graphql java kickstart引发的异常,问题在于graphql java kickstart没有注册标量“Long”
您可以按照此文档创建自定义标量,也可以将Scalars.GraphQLLong
GraphQLScalarType连接到模式解析器中
要创建自定义标量,需要两件事:
GraphQLScalarType的一个实例,该实例将把graphql输入强制到java表示中。多亏了GraphQLJava,这已经实现了很长时间了!我们将使用Scalars.GraphQLLong
SchemaParser bean:graphql java kickstart使用默认的SchemaParser,可以覆盖它来指定模式解析器选项、模式文件等
@Bean
public SchemaParser schemaParser() {
//Chose your SchemaParserOptions as documented here: https://www.graphql-java-kickstart.com/tools/schema-parser-options/
SchemaParserOptions schemaParserOptions = SchemaParserOptions.newOptions() //
.preferGraphQLResolver(true) //customize your options
.build();
return SchemaParser.newParser() //SchemaParserBuilder
.file("schema.graphqls") //Pick your schema files
.scalars(Scalars.GraphQLLong) //Set your custom scalars
.options(schemaParserOptions) //Set your schema parser options
.build();
}
配置SchemaParser
的另一种方法是将您想要的标量注册为它们自己的bean
@Bean
public GraphQLScalarType longType() {
return Scalars.GraphQLLong;
}
注意:Java特定的标量目前已被弃用,注意它们将在将来移动到一个单独的库。配置SchemaParser
的另一种方法是将您想要的标量注册为它们自己的bean
@Bean
public GraphQLScalarType longType() {
return Scalars.GraphQLLong;
}
注意:Java特定的标量目前已被弃用,并注意到它们将来将被移动到一个单独的库中。我还没有使用springboot graphql kickstart中捆绑的标量,我也不知道Kotlin。但是您尝试过“val timestamp:Long”吗如果是这样的话,它有什么问题吗?这是一个例外:graphql.kickstart.tools.SchemaClassScannerError:需要一个名为“Long”的用户定义graphql标量类型,但没有找到!
我没有使用springboot graphql kickstart中捆绑的标量,我不知道Kotlin。但是您尝试过“val timestamp:Long”吗如果是这样的话,它有什么问题吗?这是一个例外:graphql.kickstart.tools.SchemaClassScannerError:需要一个名为“Long”的用户定义graphql标量类型,但找不到!
你能给我看一下完整的工作示例吗?我总是看到人们如何像你这样解释这个解决方案,但因为我使用了spring boot是DI我不知道该写在哪里?@xetra11我添加了一个完整的schemaParser bean示例。应该不需要其他任何东西。你能给我展示完整的工作示例吗?我总是看到人们像你在这里一样用一行程序来解释这个解决方案,但由于我使用spring boot,它是DI,我不知道该写在哪里?@xetra11我添加了一个完整的schemaParser bean示例。应该不需要其他任何东西。