Сохранение Hashtable с использованием Mongo и платформы Play? - PullRequest
0 голосов
/ 14 января 2012

У меня есть модель, определенная следующим образом ...

@MongoEntity
public class Ent extends MongoModel{
   public Hashtable<Integer, CustomType> fil;
   public int ID;

   public Ent(){
     fil = new Hashtable<Integer, CustomType>();
   }
}

CustomType - это созданный мной тип данных, который в основном содержит список элементов (среди прочего). В какой-то момент в моем веб-приложении я обновляю хеш-таблицу с контроллера, а затем считываю размер только что обновленного элемента. Как следующее ...

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, которое я сохраняю, нет. Почему это происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 08 февраля 2012

Вы, вероятно, должны опубликовать на форуме Play Framework для лучшей помощи. Альтернативы для платформы mongodb - это morphia и springdata, которые имеют хорошую документацию.Не уверен, как Play отображает хеш-таблицу в значение документа, но кажется, что он не может обновить только хеш-таблицу, используя оператор Монго.Вы должны иметь возможность пометить весь документ для обновления, который будет работать, но медленнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...