如何在 Graphql 中处理运行时多态性- Java

How to handle Runtime Polymorphism in Graphql- Java

我想知道我们如何处理 Graphql Schema 文件中的运行时多态性,

@Data
class Parent {
   String libraryName;
}

@Data
class Child extends Parent {
 String bookName;
}

测试class=>

class Test {
 String id;
 Child childObj;
}

现在在正常情况下会发生运行时多态性,并且 Test.Child 将使用父 class 对象进行初始化 即 Parent prnt = new Child();

例如 Schema.graphqls

type Test{
  id: String!
  childObj: Child    // Cant assign Parent object
}

// This doesn't work
type Child {
    bookName: String
    libraryName: String
}

type Parent {
    bookName: String
    libraryName: String
}

但是在 GraphQl Schema 文件中怎么提到它呢?

在您的示例中,您可以定义 ChildParent 类型都实现的 interface。例如,您可以将其命名为 Member 并将 Test.childObj 的类型更改为 Member:

interface Member {
  bookName: String
  libraryName: String
}

type Test {
  id: String!
  childObj: Member    
}

type Child implements Member {
    bookName: String
    libraryName: String
}

type Parent implements Member {
    bookName: String
    libraryName: String
}

另一个选项可能是 extend 功能,但似乎尚未广泛使用。参见 this post