我在映射内部集合时遇到了一些问题。不同的项目可以有不同的内容类型。这是我的Item类:
@Document(collection = "items")
public class Item{
@Id
private ObjectId id;
private List<? super Content> content;
...
}
Content 是此项目中不同内容的基类。
public class YoutubeVideo implements Content{
private String url;
}
public class Image implements Content{
private String location;
}
...
保存内容集合中一个包含一张图片和两个Youtube视频类的物品后,我得到了以下的JSON数据
{ "_id" : { "$oid" : "4e423dcf7f3a0d12265da46c"}
"content" : [
{ "location" : "hdd path"} , { "url" : "url path"} , { "url" : "url path"}
]}
我看到的JSON并不是我期望的那个。很容易理解为什么无法加载和反序列化这个文档。
java.lang.RuntimeException: Can not map ? super trngl.mongo.domain.content.Content
你如何映射这种类型的对象?我不想手动序列化和反序列化对象。这可行吗?
发现了有趣的转换器类:mapping-explicit-converters。