如何在 Graphql-Java 中处理运行时多态性
Posted
技术标签:
【中文标题】如何在 Graphql-Java 中处理运行时多态性【英文标题】:How to handle Runtime Polymorphism in Graphql- Java 【发布时间】:2021-11-23 14:25:27 【问题描述】:我想知道我们如何处理 Graphql Schema 文件中的运行时多态性,
@Data
class Parent
String libraryName;
@Data
class Child extends Parent
String bookName;
测试 class=>
class Test
String id;
Child childObj;
现在在正常情况下会发生运行时多态性,并且 Test.Child 将使用父类对象进行初始化 即父 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 文件中如何提及呢?
【问题讨论】:
【参考方案1】:在您的示例中,您可以定义Child
和Parent
类型都实现的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。
【讨论】:
虽然我不能真正使用 interface ,我只想扩展类,但现在可以看到它有一个解决方法。谢谢以上是关于如何在 Graphql-Java 中处理运行时多态性的主要内容,如果未能解决你的问题,请参考以下文章
如何将 ServletRequest 传递给在 graphql-java 中执行 i/o 的 pojo