gpt4 book ai didi

java - JDO - 更新对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:01 24 4
gpt4 key购买 nike

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

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

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();

所以我想要这样的东西:

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;
}

最佳答案

“ transient ”对象没有“身份”,因此无法在数据存储中找到它。仔细考虑是要使用 transient 对象,还是只使用分离对象会更好。 JPA 使用等效于“分离的”对象。 JDO 也可以这样做,然后您只需调用 pm.makePersistent(detachedObj);

--安迪 ( DataNucleus )

关于java - JDO - 更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com