Движок приложения JDO: составной ключ - PullRequest
2 голосов
/ 25 января 2012

Это правильный способ определения составного ключа для класс:

@PersistenceCapable
class Item {
  @PrimaryKey
  long id;
  @PrimaryKey
  String sellerID;
  // ... other fields follow
}

потому что я хочу, чтобы пара (id, sellerID) была уникальной, а не только сама по себе.

Таким образом, в хранилище данных движка приложения мне нужен объект, который включает поля как-то в ключ (например, разделяя их с тире и объединяя их), но я не уверен, как проинструктировать механизм приложений для этого через JDO или даже через низкоуровневый API.

1 Ответ

4 голосов
/ 26 января 2012

Самый простой способ здесь - использовать KeyFactory и использовать один ключ, который вы генерируете каждый раз:

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/KeyFactory.Builder.html

Создайте ключ строки и объедините два поля.Создание двух аннотаций @PrimaryKey не сработает - обработайте App Engine как можно ближе к хранилищу значений ключей.Мне очень нравится объяснение Джеффа Шнитцера о том, как думать о хранилище данных как о HashMap / Dictionary:

http://code.google.com/p/objectify-appengine/wiki/Concepts

...