Как сгенерировать ключ для групповой сущности? - PullRequest
1 голос
/ 27 апреля 2010

Я пытаюсь создать групповую сущность.Что-то вроде:

class User {
}

class UserColor {
}

...

Key key = new KeyFactory.Builder(
  User.class.getSimpleName(), username).
    .addChild(UserColor.class.getSimpleName(), ???).getKey();

Я заранее знаю уникальное имя пользователя, используемое для ключа объекта User.Но я просто хочу, чтобы механизм приложений генерировал случайное уникальное значение для значения ключа экземпляра UserColor.

Я думаю, что это описано здесь, но я не понимаю их формулировку: http://code.google.com/appengine/docs/java/datastore/transactions.html

Чтобы создать объект с сгенерированным системой числовым идентификатором и родительским элементом группы объектов, необходимо использовать поле родительского ключа группы объектов (например, customerKey, выше).Присвойте ключ родителя полю родительского ключа, затем оставьте поле ключа объекта равным нулю.Когда объект сохранен, хранилище данных заполняет поле ключа полным ключом, включая родительский объект группы.

, и это их пример:

@Persistent
@Extension(vendorName="datanucleus", key="gae.parent-pk", value="true")
private Key customerKey;

но я нене понимаю - должен ли UserColor выглядеть так?

1017

это правильно?Используя этот метод, я смогу использовать объект UserColor в транзакции вместе, верно?

Спасибо

1 Ответ

0 голосов
/ 01 февраля 2011

правильно, ваш второй пример - правильная идея. это позволит вам использовать пользователя и его дочерние пользовательские цвета в одной транзакции.

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

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