我将 Mongo 与 native Java 驱动程序(没有 3rd 方库/ORM)一起使用。我有这个:
public class Release extends ReflectionDBObject {
//other fields omitted
private List<ReleaseDetailsByTerritory> releaseDetailsByTerritory = new ArrayList<ReleaseDetailsByTerritory>();
}
public class ReleaseDetailsByTerritory extends ReflectionDBObject { //...}
如果我想检索具有两个“ReleaseDetailsByTerritory”条目的“Release”条目,并让它们在包含两个 ReleaseDetailsByTerritory 类实例的 List 的 Release 类实例中自动实例化,我必须这样做:
releaseColl.setObjectClass(Release.class);
releaseColl.setInternalClass("ReleaseDetailsByTerritory.0", ReleaseDetailsByTerritory.class);
releaseColl.setInternalClass("ReleaseDetailsByTerritory.1", ReleaseDetailsByTerritory.class);
Release r = (Release) releaseColl.findOne();
即我需要将嵌入数组的每个潜在元素专门映射到相应的类。
有没有办法告诉 Mongo 驱动程序我希望将嵌入数组的所有元素和任何元素映射到某个类?就像是 :
collection.setInternalClass("ReleaseDetailsByTerritory.*", ReleaseDetailsByTerritory.class);
?
谢谢。并且请不要说“使用 Spring MondoDb 模块或 Morphia”。我想知道这是否可以通过 Mongo native Java 驱动程序实现。
最佳答案
查看源代码,我认为这是不可能的。也没有明显的方法可以为您的需要创建便利的功能。考虑到大量内存使用会导致大型数组,必须为每个数组元素调用 setInternalClass 几乎不是一种选择。
您可能需要考虑实现您自己的“文档”类实现,该类可以满足您的需求,而无需使用完整的映射解决方案,例如 Morphia(它实际上非常优雅,至少比 Spring 更优雅)。
您还可以考虑在 jira.mongodb.org 上打开 JIRA 问题并请求此功能。
关于java - Mongo ReflectionDBObject,将所有嵌入数组的元素映射到一个类;,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8848359/