Обновить сущность с помощью Objectify

Я сталкиваюсь с этим сценарием: у меня есть три объекта (EntA, EntB и EntC), EntA и EntB имеют параметр Key‹ EntC>. Также EntC имеет параметр List‹ String>, который содержит ключи EntA и EntB в виде строки.

Чтобы получить ключи любого из сущностей, я сначала должен их сохранить (поле id создается автоматически). Итак, я делаю это:

  1. Создайте и сохраните EntC, это создаст значение Key‹ EntC>, которое мне нужно для EntA и EntB.
  2. Я создаю EntA и EntB с помощью Key‹ EntC> и сохраняю их.
  3. Обновите EntC, добавив Key‹ EntA> и Key‹ EntC> в соответствующий список. Я обнаружил, что сущности не обновляются в DS, а переписываются. Итак, я сначала извлекаю EntC, получаю его идентификатор, который я использую для создания нового объекта EntC, содержащего Key‹ EntA> и Key‹ EntB>. Наконец, я удаляю исходный EntC и сохраняю новый EntC.

Я хотел бы знать, есть ли лучший подход для достижения этого. Кроме того, возможно ли, что другой объект получит идентификатор исходного объекта EntC после того, как я его удалю и до того, как я сохраню новый объект EntC?


person sosegon12    schedule 08.06.2012    source источник


Ответы (1)


Выделите идентификатор заранее:

Например, с родителем выполните:

Key<YourEntity> k=  dao.fact().allocateId(parentObj, YourEntity.class);
(obviously dao extends DAOBase, I think you know that from using objectify)


 allocateId(java.lang.Class<T> clazz) 
       Allocates a single id from the allocator for the specified kind.


 allocateId(java.lang.Object parentKeyOrEntity, java.lang.Class<T> clazz) 
      Allocates a single id from the allocator for the specified kind.

http://objectify-appengine.googlecode.com/svn/trunk/javadoc/com/googlecode/objectify/ObjectifyFactory.html

person user1258245    schedule 08.06.2012