我一直在尝试将tomcat / mysql应用程序移植到Google App Engine。我正忙着获取刚才持久化的对象的关键值。有没有办法获取持久对象的Key值?有没有人有Java代码可以说明如何做到这一点?
谢谢, 埃里克
答案 0 :(得分:2)
我认为在我们告诉你你做错了什么之前,你需要发布一个代码示例。我有一个id类型为Long的实体,在我调用makePersistent()
后,id会被填入。这是代码的样子:
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对象。如果你有id:
,你可以自己创建public Key getKey() {
return KeyFactory.createKey(GameEntity.class.getSimpleName(), id);
}
答案 1 :(得分:0)
答案 2 :(得分:0)
不完全回答,但是......
在提交事务之前,显然没有分配ID。在我保存之前,我自己切换到为我的GAE对象生成随机字符串ID。