Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring数据映射通用集合(MongoDB)?_Java_Collections_Mongodb_Spring Data - Fatal编程技术网

Java 如何使用Spring数据映射通用集合(MongoDB)?

Java 如何使用Spring数据映射通用集合(MongoDB)?,java,collections,mongodb,spring-data,Java,Collections,Mongodb,Spring Data,我在映射内部集合时遇到一些问题。 项目可以有不同的内容类型。这是我的项目类: @Document(collection = "items") public class Item{ @Id private ObjectId id; private List<? super Content> content; ... } 在内容集合中使用一个图像和两个YoutubeVideo类保存(保存完成时没有问题)项后,我得到了这个JSON { "_id" : { "$oid" : "4e4

我在映射内部集合时遇到一些问题。 项目可以有不同的内容类型。这是我的项目类:

@Document(collection = "items")
public class Item{
@Id
private ObjectId id;   
private List<? super Content> content;
...
}
在内容集合中使用一个图像和两个YoutubeVideo类保存(保存完成时没有问题)项后,我得到了这个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
你将如何映射这种对象?我不想手动序列化和反序列化对象。可能吗


发现兴趣转换器类:

CodeList使用List应该足够了,因为您无论如何都无法从混合内容列表访问具体类型。(顺便说一句,super在这里肯定是错误的,因为您没有存储
内容的superties
,而是子类型。另一方面,Extends不会增加任何附加值)

List
应该与
MongoTemplate
的最新快照配合使用,因为我们修复了自上一个里程碑版本以来的许多错误。如果您正在使用我们的存储库抽象,请确保
Content
是一个包含id属性的抽象类。有一个开放的平台,您可能希望看到我们也支持作为存储库管理类型的接口。

仅供参考(因为我们在试图弄清楚为什么要将对象作为成员的
LinkedHashMaps
返回后,找了一个早上好),这个问题也发生了(在1.0.2.RELEASE中),当您尝试将
集合
存储在以下表单中时:

@Document(collection = "items")
public class Item{
@Id
private ObjectId id;   
private Collection<Content> content;
...
}
@文档(collection=“items”)
公共类项目{
@身份证
私有ObjectId;
私人收藏内容;
...
}

如上所述,解决方案是将其切换到
列表

嗨,谢尔盖。不,你错了。保存后的JSON是相同的。问题不在java类中,而是在序列化程序/反序列化程序中。保存的JSON没有任何真实的类id,这就是为什么不可能反序列化JSON.Hi Oliver。非常感谢。你说得对。随着1.0.0.M3 everithig像我预期的那样工作,我看到了额外的'u class'属性。但是现在我所有的类都有了这个属性。仅此集合中存储的对象需要此属性。你能帮我吗?在某些类中是否可能有此属性?是否知道M4会改变此属性?它似乎不再像这里描述的那样工作了。集合是否需要任何注释?
@Document(collection = "items")
public class Item{
@Id
private ObjectId id;   
private Collection<Content> content;
...
}