首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java App Engine获取自动生成的键值

问Java App Engine获取自动生成的键值
EN

Stack Overflow用户
提问于 2010-06-26 05:44:58
回答 3查看 1.5K关注 0票数 2

我一直在尝试将tomcat/mysql应用程序移植到Google App Engine上。在获取我刚刚持久化的对象的键值时,我遇到了一点问题。有没有办法获得持久化对象的键值?有没有人有用Java编写的代码来演示如何做到这一点?

谢谢你,埃里克

EN

回答 3

Stack Overflow用户

发布于 2010-06-26 10:40:42

我认为你需要先发布一个代码样本,然后我们才能告诉你哪里做错了。我有一个id类型为Long的实体,该id在我调用makePersistent()之后被填充。下面是代码的样子:

代码语言:javascript
复制
    GameEntity game = new GameEntity();
    log.warning("before makePersistent id is " + game.getId());
    pm.makePersistent(game);
    log.warning("after makePersistent id is " + game.getId());

下面是GameEntity类的一个片段:

代码语言:javascript
复制
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class GameEntity {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

输出显示了您所期望的结果:

代码语言:javascript
复制
WARNING 6428 - before makePersistent id is null
WARNING 6444 - after makePersistent id is 6

更新:我很晚才想到你可能需要一个真正的Key对象。如果您拥有以下id,则可以自己创建它:

代码语言:javascript
复制
public Key getKey() {
    return KeyFactory.createKey(GameEntity.class.getSimpleName(), id);
}
票数 2
EN

Stack Overflow用户

发布于 2010-06-26 08:46:35

JPA或JDO或其他什么?

Google应用程序引擎有很好的文档

http://code.google.com/appengine/docs/java/datastore/usingjpa.html

票数 0
EN

Stack Overflow用户

发布于 2010-06-26 09:22:33

不能完全回答,但是...

在提交事务之前,Ids显然是不会被分配的。在保存GAE对象之前,我切换到自己为它们生成随机字符串I。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3121643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档