Встроенные объекты в Objectify, по-видимому, не генерируют Id автоматически - PullRequest
2 голосов
/ 24 августа 2011

Я использую Objectify с моим первым серьезным проектом Google App Engine, и в целом все идет гладко (какая замечательная библиотека!).К сожалению, я столкнулся с проблемой при сохранении своих сущностей.

Моя основная структура выглядит следующим образом:

@Entity
class Parent {
    @Id
    long id = 123;
    @Embedded
    Child[] children;
}

@Entity
class Child {
    @Id
    Long id;
}

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

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

1 Ответ

5 голосов
/ 24 августа 2011

Начиная с http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Entity_Representation, не похоже, что @Embedded сущности на самом деле являются отдельными сущностями в вашем хранилище данных.Они просто хранятся как свойства непосредственно в полях родительского объекта.

Если вы хотите, чтобы дочерние объекты были их собственными, отдельно доступными объектами, вы должны изменить Parent, чтобы он содержал массив ключей илиИдентификаторы, а затем создайте экземпляры Child объектов отдельно.Это сгенерирует идентификаторы для каждого дочернего элемента (который вы можете сохранить в массиве идентификаторов в Parent).

...