Neo4j GraphQL GraphQL.idl未生成接口

Neo4j GraphQL GraphQL.idl未生成接口,neo4j,graphql,Neo4j,Graphql,我正在测试Neo4j GraphQL插件。 我有一个IDL模式,我将其传递给Neo4j: CALL graphql.idl( 'type Address {   id: ID!   display_name: String   adress_spec: AddrSpec!   adress_from: Originator! @relation(name: "From")   adress_sender: Originator @relation(name: "Sender")   adress

我正在测试Neo4j GraphQL插件。 我有一个IDL模式,我将其传递给Neo4j:

CALL graphql.idl(
'type Address {
  id: ID!
  display_name: String
  adress_spec: AddrSpec!
  adress_from: Originator! @relation(name: "From")
  adress_sender: Originator @relation(name: "Sender")
  adress_reply_to: Originator @relation(name: "ReplyTo")
  destination_to: [Destination] @relation(name: "To")
  destination_cc: [Destination] @relation(name: "Cc")
  destination_bcc: [Destination] @relation(name: "Bcc")
}

type Originator {
  id: ID!
  origin_date: Datetime!
  originator_role: originator_role!
  message: [Message!] @relation(name: "Originator")
  address_from: Address! @relation(name: "From")
  address_sender: Address @relation(name: "Sender")
  address_reply_to: Address @relation(name: "ReplyTo")
}

type Destination {
  id: ID!
  destination_role: destination_role!
  received_date: Datetime!
  message: Message! @relation(name: "Destination")
  address_to: [Address]! @relation(name: "To")
  address_cc: [Address] @relation(name: "Cc")
  address_bcc: [Address] @relation(name: "Bcc")
}

type Message {
  id: ID!
  subject: String
  comments: String
  originator: Originator! @relation(name: "Originator")
  destinations: [Destination]! @relation(name: "HasDestination")
  referencing: [Message] @relation(name: "Referencing")
  in_reply_to: [Message] @relation(name: "InReplyTo")
  keywords: [Keyword] @relation(name: "Tags")
}

type Keyword {
  id: ID!
  keyword: String!
  messages: [Message] @relation(name: "Tags")
}
');
我确实得到了一个接口描述:

"{Address=MetaData{type='Address', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), display_name=PropertyInfo(fieldName=display_name, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={adress_spec=RelationshipInfo(fieldName=adress_spec, type=adress_spec, label=AddrSpec, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), adress_from=RelationshipInfo(fieldName=adress_from, type=From, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), adress_sender=RelationshipInfo(fieldName=adress_sender, type=Sender, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), adress_reply_to=RelationshipInfo(fieldName=adress_reply_to, type=ReplyTo, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), destination_to=RelationshipInfo(fieldName=destination_to, type=To, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), destination_cc=RelationshipInfo(fieldName=destination_cc, type=Cc, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), destination_bcc=RelationshipInfo(fieldName=destination_bcc, type=Bcc, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Originator=MetaData{type='Originator', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={origin_date=RelationshipInfo(fieldName=origin_date, type=origin_date, label=Datetime, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), originator_role=RelationshipInfo(fieldName=originator_role, type=originator_role, label=originator_role, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), message=RelationshipInfo(fieldName=message, type=Originator, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), address_from=RelationshipInfo(fieldName=address_from, type=From, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), address_sender=RelationshipInfo(fieldName=address_sender, type=Sender, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), address_reply_to=RelationshipInfo(fieldName=address_reply_to, type=ReplyTo, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Destination=MetaData{type='Destination', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={destination_role=RelationshipInfo(fieldName=destination_role, type=destination_role, label=destination_role, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), received_date=RelationshipInfo(fieldName=received_date, type=received_date, label=Datetime, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), message=RelationshipInfo(fieldName=message, type=Destination, label=Message, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), address_to=RelationshipInfo(fieldName=address_to, type=To, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), address_cc=RelationshipInfo(fieldName=address_cc, type=Cc, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), address_bcc=RelationshipInfo(fieldName=address_bcc, type=Bcc, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Message=MetaData{type='Message', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), subject=PropertyInfo(fieldName=subject, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), comments=PropertyInfo(fieldName=comments, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={originator=RelationshipInfo(fieldName=originator, type=Originator, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), destinations=RelationshipInfo(fieldName=destinations, type=HasDestination, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), referencing=RelationshipInfo(fieldName=referencing, type=Referencing, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), in_reply_to=RelationshipInfo(fieldName=in_reply_to, type=InReplyTo, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), keywords=RelationshipInfo(fieldName=keywords, type=Tags, label=Keyword, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Keyword=MetaData{type='Keyword', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), keyword=PropertyInfo(fieldName=keyword, type=String!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={messages=RelationshipInfo(fieldName=messages, type=Tags, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}}"
但是,在GraphiQL中没有模式描述,在Neo4j中,我在询问以下问题时出错:

call graphql.schema()
结果:

Neo.ClientError.Procedure.ProcedureCallFailed:未能调用过程
graphql.schema
:原因:kotlin.KotlinNullPointerException

有什么建议吗

/托马斯

以下是日志摘录:

2018-04-24 18:58:01.395+0000警告/图形/ kotlin.KotlinNullPointerException位于 org.neo4j.graphql.GraphQLSchemaBuilder.newReferenceField(GraphQLSchemaBuilder.kt:262) 在 org.neo4j.graphql.graphqlschemabilder.addRelationships(graphqlschemabilder.kt:228) 在 org.neo4j.graphql.graphqlschemabilder.toGraphQLObjectType(graphqlschemabilder.kt:180) 在 org.neo4j.graphql.graphqlschemabilder.graphQlTypes(graphqlschemabilder.kt:662) 在 org.neo4j.graphql.graphqlschemabilder.buildSchema(graphqlschemabilder.kt:387) 在 org.neo4j.graphql.GraphQLSchemaBuilder$Companion.buildSchema(GraphQLSchemaBuilder.kt:338) 位于org.neo4j.graphql.GraphSchema.getGraphQL(GraphSchema.kt:19) org.neo4j.graphql.GraphQLResource.executeQuery(GraphQLResource.kt:80) 在 org.neo4j.graphql.GraphQLResource.executeOperation(GraphQLResource.kt:47) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:498) com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 在 com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker.\u dispatch(AbstractResourceMethodDispatchProvider.java:205) 在 com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 在 org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:147) 在 com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 在 com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 在 com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1542) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1473) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) 在 com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) 在 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) 在 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:790) org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) 在 ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) 在 org.neo4j.server.rest.dbms.AuthorizationEnabledFilter.doFilter(AuthorizationEnabledFilter.java:123) 在 ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 在 org.neo4j.server.rest.web.CollectUserAgentFilter.doFilter(CollectUserAgentFilter.java:69) 在 ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 位于org.eclipse.jetty.server.server.handle(server.java:499) org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)位于 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258) 在 org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 在java.lang.Thread.run(Thread.java:748)2018-04-2419:11:54.733+0000 信息Neo4j服务器关闭由请求启动2018-04-24 19:11:54.784+0000信息停止。。。2018-04-2419:11:54.871+0000信息 停下来

这对我很有用:

我变了

  • 到字符串的日期时间
  • 要字符串的*u角色
  • AddressSpec到字符串
  • 附加说明
然后


什么类型的任务是
目的地\角色
地址规范
日期时间
?如果不是默认的
direction=“OUT”
而是
direction=“IN”
我试过这个:调用graphql.idl('typ
CALL graphql.idl(
'type Address {
  id: ID!
  display_name: String
  adress_spec: String!
  adress_from: Originator! @relation(name: "From")
  adress_sender: Originator @relation(name: "Sender")
  adress_reply_to: Originator @relation(name: "ReplyTo")
  destination_to: [Destination] @relation(name: "To")
  destination_cc: [Destination] @relation(name: "Cc")
  destination_bcc: [Destination] @relation(name: "Bcc")
}

type Originator {
  id: ID!
  origin_date: String!
  originator_role: String!
  message: [Message!] @relation(name: "Originator", direction:"IN")
  address_from: Address! @relation(name: "From", direction:"IN")
  address_sender: Address @relation(name: "Sender", direction:"IN")
  address_reply_to: Address @relation(name: "ReplyTo", direction:"IN")
}

type Destination {
  id: ID!
  destination_role: String!
  received_date: String!
  message: Message! @relation(name: "Destination", direction:"IN")
  address_to: [Address]! @relation(name: "To", direction:"IN")
  address_cc: [Address] @relation(name: "Cc", direction:"IN")
  address_bcc: [Address] @relation(name: "Bcc", direction:"IN")
}

type Message {
  id: ID!
  subject: String
  comments: String
  originator: Originator! @relation(name: "Originator")
  destinations: [Destination]! @relation(name: "HasDestination")
  referencing: [Message] @relation(name: "Referencing")
  in_reply_to: [Message] @relation(name: "InReplyTo")
  keywords: [Keyword] @relation(name: "Tags")
}

type Keyword {
  id: ID!
  keyword: String!
  messages: [Message] @relation(name: "Tags", direction:"IN")
}
');