Я думаю, вам нужно опубликовать пример кода, прежде чем мы расскажем вам, что вы делаете неправильно.У меня есть сущность с идентификатором типа 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
ОБНОВЛЕНИЕ: мне запоздало пришло в голову, что вам может понадобиться настоящий объект Key.Вы можете создать это самостоятельно, если у вас есть идентификатор:
public Key getKey() {
return KeyFactory.createKey(GameEntity.class.getSimpleName(), id);
}