Хобрук: Ваш путь к мастерству в программировании

Java App Engine Получить автоматически сгенерированное значение ключа

Я пытался перенести приложение tomcat/mysql на Google App Engine. Я немного зависаю при получении ключевых значений объектов, которые я только что сохранил. Есть ли способ получить значение ключа сохраняемого объекта? У кого-нибудь есть код на Java, который может показать, как это сделать?

Спасибо, Эрик


Ответы:


1

Я думаю, вам нужно опубликовать пример кода, прежде чем мы сможем сказать вам, что вы делаете неправильно. У меня есть Entity с типом идентификатора Long, и идентификатор заполняется после того, как я вызываю makePersistent(). Вот как выглядит код:

    GameEntity game = new GameEntity();
    log.warning("before makePersistent id is " + game.getId());
    pm.makePersistent(game);
    log.warning("after makePersistent id is " + game.getId());

Вот фрагмент класса GameEntity:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class GameEntity {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

И вывод показывает, что вы ожидаете:

WARNING 6428 - before makePersistent id is null
WARNING 6444 - after makePersistent id is 6

ОБНОВЛЕНИЕ. Мне с опозданием пришло в голову, что вам может понадобиться настоящий ключевой объект. Вы можете создать это самостоятельно, если у вас есть идентификатор:

public Key getKey() {
    return KeyFactory.createKey(GameEntity.class.getSimpleName(), id);
}
26.06.2010

2

JPA или JDO или что?

Движок приложения Google имеет хорошие документы

http://code.google.com/appengine/docs/java/datastore/usingjpa.html

26.06.2010

3

Не совсем ответ, но...

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

26.06.2010
  • Да, я надеялся, что будет API для возврата этого значения, когда оно зафиксировано, но я ничего не нашел для него. 26.06.2010
  • Новые материалы

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...