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