2012-01-14 86 views
0

我有類似如下定義的模型......使用Mongo&Play框架保存Hashtable?

@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's,String的,Integer的等更新正確時,他們更新但這Hashtable我存儲不是。爲什麼會發生這種情況,我該如何糾正?

回答

0

你應該在發佈框架論壇發佈更好的幫助.. mongodb框架的替代品是morphia和springdata,它們都有很好的文檔。 不確定Play如何將哈希表映射到文檔值,但似乎無法使用mongo運算符更新哈希表。 您應該能夠標記整個文檔以進行更新,但這會工作但速度較慢。