我在父类中有这个配置:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type",
visible = true
)
@JsonSubTypes({
@JsonSubTypes.Type(value = AnalysisViewer.class, name = "ANALYSIS"),
@JsonSubTypes.Type(value = CombinedAnalysisViewer.class, name = "COMBINED"),
@JsonSubTypes.Type(value = SingleSourceViewer.class, name = "SINGLESOURCE"),
@JsonSubTypes.Type(value = SingleSourceGroupViewer.class, name = "SINGLESOURCE_GROUP")
})
这个类有一个type
属性,我需要将其保存到数据库中(使用JPA)。
public class Viewer {
...
@Column(name = "TP_VIEWER")
@Enumerated(EnumType.STRING)
private ViewerTypeEnum type;
...
}
使用此配置或更改为 visible=false
和 include=JsonTypeInfo.As.PROPERTY
,我会在序列化时出现错误,提示无法写入相同的属性两次,或者出现错误,提示无法保存空值到type
列中。
我需要将类型属性保存到数据库中,并使用它来向Jackson传递子类型信息。我尝试了很多不同的配置,但找不到关于保留和填充属性的反序列化文档。请问有人能帮我吗?
先感谢您的帮助。