首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDO -更新对象

JDO -更新对象
EN

Stack Overflow用户
提问于 2009-04-17 17:08:54
回答 1查看 3.2K关注 0票数 6

我正在试验Google App Engine和持久化选项JDO。我想知道是否可以将一个临时对象映射到一个持久对象?或者使用瞬态对象来更新持久对象?

在代码示例中,我看到了以下用于更新对象的代码:

代码语言:javascript
复制
public void updateEmployeeTitle(User user, String newTitle) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
    Employee e = pm.getObjectById(Employee.class, user.getEmail());
    if (titleChangeIsAuthorized(e, newTitle) {
        e.setTitle(newTitle);
    } else {
        throw new UnauthorizedTitleChangeException(e, newTitle);
    }
} finally {
    pm.close();
}
}

但这不是我想要的,有谁知道我是否可以像JPA那样更新整个对象: object.update();

所以我想要这样的东西:

代码语言:javascript
复制
public User update(User u) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    User usr;
    try {
        usr = pm.getObjectById(User.class, u.getId());
        // copy transient object u to persist object usr.
                    // on update of usr all changes in object u are persistent.

    } finally {
        pm.close();
    }

    return u;
}
EN

回答 1

Stack Overflow用户

发布于 2009-04-22 13:20:11

“瞬态”对象没有“身份”,因此无法在数据存储中找到它。如果您想要使用临时对象,还是只使用分离对象会更好,请仔细考虑。JPA使用“分离”对象的等价物。JDO也能做到这一点,然后你只需调用pm.makePersistent(DetachedObj)即可;

--安迪(DataNucleus)

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

https://stackoverflow.com/questions/761306

复制
相关文章

相似问题

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