【发布时间】:2015-12-21 05:45:14
【问题描述】:
我在父类上有这个配置:
@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 列中。
我需要的是在数据库中有 type 属性并用它来教 Jackson 子类型。我尝试了很多不同的配置,但我找不到关于在反序列化时保留和填充属性的文档。有人可以帮我吗?
提前致谢。
【问题讨论】:
标签: java json hibernate jackson