我的模型定义如下......
@MongoEntity
public class Ent extends MongoModel{
public Hashtable<Integer, CustomType> fil;
public int ID;
public Ent(){
fil = new Hashtable<Integer, CustomType>();
}
}
CustomType
是我创建的数据类型,它基本上包含项目列表(以及其他内容)。在我的Web应用程序中的某个时刻,我从控制器更新哈希表,然后读回刚刚更新的项目的大小。如下......
public static void addToHash(CustomType type, int ID, int key){
//First I add an element to the list I'm storing in custom type.
Ent ent = Ent.find("byID",ID).first();
CustomType element = user.fil.get(key);
if(element == null) element = new CustomType();
element.add(type);
ent.save();
//Next I reset the variables and read back the value I just stored..
ent = null;
ent = User.find("byID",ID).first();
element = ent.fil.get(ID);
System.out.println("SIZE = " + element.size()); //null pointer here
}
正如您在上面的示例中所看到的,我添加了元素,保存模型,然后尝试回读我刚刚添加的内容并且尚未保存。上面的模型Ent
是我实际使用的整个模型的最小版本。模型中的所有其他值,包括List
',String
,Integer
等,在更新时会正确更新,但此Hashtable
我正在存储不是。为什么会发生这种情况?我怎么能纠正它?
答案 0 :(得分:0)
您应该在Play框架论坛上发帖以获得更好的帮助.. mongodb框架的替代品是morphia和springdata,它们具有良好的文档。 不确定Play如何将哈希表映射到文档值,但似乎无法使用mongo运算符更新哈希表。 您应该能够将整个文档标记为更新,这可能会有效但速度较慢。