You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中用Quarkus Smallrye Openapi标记整型字段为必填

解决Quarkus SmallRye OpenAPI未标记Kotlin数据类非空字段为必填的问题

针对你遇到的问题,这里有两个可行的解决办法:

方法一:开启Kotlin非空类型自动映射配置

在application.properties中添加以下配置,让SmallRye OpenAPI自动将Kotlin的非空类型字段标记为必填:

quarkus.smallrye-openapi.kotlin.non-null-as-required=true

这个配置会让所有非空的Kotlin属性自动加入OpenAPI Schema的required列表,无需额外添加注解。配置后重新生成的Schema会自动把id和name纳入必填字段。

方法二:使用字段级别的@Schema注解

如果不想全局开启自动映射,可以给id字段添加字段级的@Schema注解(注意要加@field:前缀,指定注解作用在字段上而非构造函数参数):

import org.eclipse.microprofile.openapi.annotations.media.Schema

data class Fruit(
    @field:Schema(required = true) val id: Long,
    val name: String
)

这样就能强制将id标记为必填字段。

为什么之前的注解无效?

你之前尝试的注解大多未指定作用目标,Kotlin默认会把注解应用在构造函数参数上,而SmallRye OpenAPI需要读取字段级别的注解才能正确识别必填项,因此加上@field:前缀是关键。

内容的提问来源于stack exchange,提问作者Luca Battistelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:53:12