То, что вы делаете, представляет собственность как отдельную сущность.Таким образом, вы получите несколько разных объектов, представляющих свойства (= атрибуты), которые ссылаются на родительский объект.
Это невозможно по следующим причинам:
Выне сможет запросить сущность по нескольким свойствам.
Если вы хотите атомарно изменить сущность или ее свойства (добавить / удалить сущность, добавить / удалить / изменить свойства), вам придется поместить их все в группу сущностей ииспользуйте транзакции.
Вам нужно будет использовать запросы, чтобы найти свойства объекта, что является дорогостоящим.
Когда вы удаляете объект, вам нужно будет вручную найти все объекты свойств и удалить их.
Итак, все в целомЯ не могу рекомендовать этот подход.
Решение:
GAE Datastore - это база данных без схемы, что означает, что вы можете хранить объекты одного типа с разными свойствами, например, иметь динамические свойства.Возникает проблема, как отобразить динамические свойства в классы.
В python вы можете достичь этого с помощью Expando class .
В Java вы можете использовать низкоуровневый класс сущностей .Низкоуровневый API-интерфейс является наиболее мощным, поскольку он предоставляет все функции хранилища данных, но его неудобно использовать при работе с классом Entity «без типа» вместо классов модели.
Objectify раньше имел встроенные карты, где вы добавляете свойства к этой карте, и они заканчиваются как свойства в объекте.Они обнаружили ошибку в реализации в Objectify 3.1 и отозвали эту функцию (= ушли из документации).Эта функция вернется в Objectify 4 , которая еще не выпущена, но вы можете построить ее из сундука, если вы чувствуете себя смелым.