Проблема в том, что классы данных получают немного особой обработки, и ваша аннотация помещается в аргумент конструктора .
Это можно увидеть в сгенерированном байт-коде вашего класса данных. Соответствующий фрагмент:
@Schema(
name = "Vehicle",
description = "POJO that represents a vehicle at a specific time."
)
@Metadata(...)
public final class VehicleDTO {
@NotNull
private Instant time;
@NotNull
public final Instant getTime() {
return this.time;
}
public final void setTime(@NotNull Instant var1) {
Intrinsics.checkParameterIsNotNull(var1, "<set-?>");
this.time = var1;
}
public VehicleDTO(@Schema(implementation = String.class,type = SchemaType.STRING) @NotNull Instant time) {
Intrinsics.checkParameterIsNotNull(time, "time");
super();
this.time = time;
}
// ...
}
Вам нужно указать Kotlin, чтобы разместить его на поле, используя цель использования сайта :
@Schema(name = "Vehicle", description = "POJO that represents a vehicle at a specific time.")
data class VehicleDTO(
@field:Schema(implementation = String::class, type = SchemaType.STRING)
var time: Instant = Instant.EPOCH
)
Соответствующий байт-код впоследствии :
@Schema(
name = "Vehicle",
description = "POJO that represents a vehicle at a specific time."
)
@Metadata(...)
public final class VehicleDTO {
@Schema(
implementation = String.class,
type = SchemaType.STRING
)
@NotNull
private Instant time;
@NotNull
public final Instant getTime() {
return this.time;
}
public final void setTime(@NotNull Instant var1) {
Intrinsics.checkParameterIsNotNull(var1, "<set-?>");
this.time = var1;
}
public VehicleDTO(@NotNull Instant time) {
Intrinsics.checkParameterIsNotNull(time, "time");
super();
this.time = time;
}
// ...
}