【发布时间】:2011-03-18 18:07:21
【问题描述】:
我有一个类似的模型类
public class MyClass extends ReflectionDBObject {
private List<NiceAttribute> attributes;
...
}
public class NiceAttribute extends ReflectionDBObject {
...
}
我以类型安全的方式创建它,例如
List<NiceAttribute> attrs = new ArrayList<NiceAttribute>();
attrs.add(new NiceAttribute());
MyClass myClass = new MyClass();
myClass.setAttributes(attrs);
然后将其保存到 mongo,并使用类似的代码检索
DBCollection col = ...;
col.setObjectClass(MyClass.class)
MyClass foundObject = (MyClass)col.findOne();
但问题是foundObject 的attributes 变成了BasicDBObject 的列表。看起来驱动程序无法(或不想)检测列表项类型。这是驱动程序限制,还是我错过了什么?什么是解决该问题的优雅解决方法?
顺便说一句,我知道 Morphia 等。也许它可以解决问题。但是我的项目很小,我不想让事情复杂化,增加一层抽象。
【问题讨论】: