В моем веб-интерфейсе есть поле выбора, которое позволяет вам выбрать валюту объекта. Однако эта валюта не типа Enum, а отдельная сущность со своей таблицей базы данных.
@Entity
public class MyEntity{
@Id
@GeneratedValue
private long id;
@Column(name = "createdAt")
private Calendar createdAt;
@Audited(targetAuditMode = NOT_AUDITED)
@JsonProperty
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
private Currency currency;
}
@Entity
public class Currency{
@Id
@GeneratedValue
private long id;
@Column(name = "currencyCode")
private String currencyCode;
}
И я ожидаю, что какая-то схема JSON будет такой, как показано ниже
{
type: "object",
additionalProperties: false,
properties: {
id: {
type: "integer"
},
createdDate: {
type: "string",
format: "date-time"
},
modifiedDate: {
type: "string",
format: "date-time"
},
currency: {
type: "string",
enum: [
"EUR",
"USD",
"JPY",
"AUD",
...
]
}
}
}
И я генерирую схему с
@Override
public ObjectSchema getJsonSchema() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
ObjectSchema schema = schemaGen.generateSchema(getGenericTypeClass()).asObjectSchema();
//schema.rejectAdditionalProperties();
return schema;
}
private Class<T> getGenericTypeClass() {
try {
String className = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0].getTypeName();
Class<?> clazz = Class.forName(className);
return (Class<T>) clazz;
} catch (Exception e) {
throw new IllegalStateException("Class is not parametrized");
}
}
Как я могу сделать динамический контент, отображаемый в схеме JSON, как если бы он был перечислением, чтобы обеспечить ограниченный выбор возможностей выбора?