【问题标题】:How to handle identity fields in GraphQL SPQR如何处理 GraphQL SPQR 中的身份字段
【发布时间】:2021-10-27 15:55:06
【问题描述】:

假设我有

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="trade_id")
    int tradeId;

当我从数据库中查询这个时,我会想要获取 tradeId。但是,在执行 Create 时,显然我不会有 tradeId,因为数据库会在我插入它时生成它。

input TradeInput {
  tradeId: Int!
...

但是,SPQR 为我生成的架构将此字段设置为 Not Null。

所以我的问题是,如何防止该字段自动显示为 Not Null,因此我不必在 Creates 上发送它,而是可以检索它。

【问题讨论】:

    标签: graphql-spqr graphql-spqr-spring-boot-starter


    【解决方案1】:

    int 根本不可能是null。但是你有几个选择:

    • 将其转换为ID 标量类型(使用@GraphQLId)而不是Int
    • 通过@GraphQLInputField给它一个默认值
    • 使用Integer 而不是int,因为Integer 可以为空

    【讨论】:

    • 谢谢!这对 int/Integer 是有意义的。顺便说一句,您编辑回复以不包含使用 0.0.6 的建议的任何原因?当我尝试它时,我无法从 ClassLoader 内省 Class [io.leangen.graphql.spqr.spring.web.HttpExecutor]。这是一个已知问题/这就是您撤回推荐的原因吗?
    • @Steve Huh,不。只是因为您没有在此处提及您使用的版本,所以我认为突然提及它会令人困惑。从未听说过您之前提到的问题...如果您没有快速解决问题,请使用最小示例复制它来打开一个问题。
    猜你喜欢
    • 2020-08-19
    • 2020-02-28
    • 2021-10-26
    • 2021-06-05
    • 2021-07-13
    • 2018-10-07
    • 2019-01-09
    • 2017-10-31
    • 2019-06-08
    相关资源
    最近更新 更多