2010-06-25 1 views
2

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

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

ответ

0

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

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

+0

Да, я надеялся, что API вернет это значение, когда оно будет совершено, но я ничего не нашел для него. –

2

Я думаю, вам нужно будет отправить образец кода, прежде чем мы сможем рассказать вам, что вы делаете неправильно. У меня есть Entity с типом id Long, и id заполняется после того, как я вызываю 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 

UPDATE: Мне пришло в голову с опозданием, что вам может понадобиться фактический объект Key. Вы можете создать это самостоятельно, если у вас есть идентификатор:

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

Это именно то, что я ищу, спасибо –

Смежные вопросы