我一直在尝试将tomcat/mysql应用程序移植到Google App Engine上。在获取我刚刚持久化的对象的键值时,我遇到了一点问题。有没有办法获得持久化对象的键值?有没有人有用Java编写的代码来演示如何做到这一点?
谢谢你,埃里克
发布于 2010-06-26 10:40:42
我认为你需要先发布一个代码样本,然后我们才能告诉你哪里做错了。我有一个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更新:我很晚才想到你可能需要一个真正的Key对象。如果您拥有以下id,则可以自己创建它:
public Key getKey() {
return KeyFactory.createKey(GameEntity.class.getSimpleName(), id);
}发布于 2010-06-26 08:46:35
发布于 2010-06-26 09:22:33
不能完全回答,但是...
在提交事务之前,Ids显然是不会被分配的。在保存GAE对象之前,我切换到自己为它们生成随机字符串I。
https://stackoverflow.com/questions/3121643
复制相似问题