【发布时间】:2012-01-13 09:29:01
【问题描述】:
我使用 Mongo 和原生 Java 驱动程序(没有第 3 方库/ORM)。我有这个:
public class Release extends ReflectionDBObject {
//other fields omitted
private List<ReleaseDetailsByTerritory> releaseDetailsByTerritory = new ArrayList<ReleaseDetailsByTerritory>();
}
public class ReleaseDetailsByTerritory extends ReflectionDBObject { //...}
如果我想检索具有两个“ReleaseDetailsByTerritory”条目的“Release”条目,并让它们在包含两个 ReleaseDetailsByTerritory 类实例的列表的 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 本机 Java 驱动程序实现。
【问题讨论】:
-
查看源代码,我认为这是不可能的。我假设您尝试传递“ReleaseDetailsByTerritory”?所以,没有 .0 或 .*?
-
是的,我尝试传递“ReleaseDetailsByTerritory”,但它不起作用。我认为您是对的,我也刚刚查看了来源,仅此而已。如果您想将您的评论变成答案,我会将其设为“选择的答案”。如果没有,我会自己回答(在 2 天内)。
标签: java mongodb mapping driver mongo-java