我有一个我通过Spring Data REST公开的课程,它看起来像这样,getter和setter,以及不相关的字段,被省略:
public class System {
@NotNull
@Valid
@OneToOne(optional = false, cascade = {CascadeType.PERSIST, CascadeType.MERGE}, orphanRemoval = true)
@JoinColumn(name = "FLOW_ID")
private FlowConfig flow;
}
FlowConfig本身并未通过RestRepository公开,它看起来像这样:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "@type")
//@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@type")
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "FLOWCONFIG")
@Audited
public abstract class FlowConfig extends BaseEntity {
// Some fields, none of them representing the type of the entity
}
问题是两个@JsonTypeInfo
注释都不起作用,我从来没有在JSON输出中获得类型信息。无论我放什么,我都不会在生成的JSON中得到@type
。
根据this link,EXISTING_PROPERTY
应该有效,但事实并非如此。如果我使用默认的ObjectMapper
测试JSON输出,则两个注释都会生成我想要的内容。
任何想法我做错了什么? 我是关于spring-data-rest-webmvc的2.6.9版本。
谢谢!