JDO:如何使分离的对象瞬态化?

时间:2012-09-10 09:46:26

标签: persistence jdo datanucleus transient

我正在使用DataNucleus 2 JDO实现。我有一个我必须附加的分离对象,但我不想附加所有字段(在这种情况下,一个集合)

public class Obj {
    private String key;
    private Collection<String> col;
}

是否有可能无法做到这一点:

tx.begin();
obj.makeTransientAll(obj.getCol()); // Do not persist
pm.makePersistent(obj);
tx.commit();
来自数据库的

或REFRESH:

tx.begin();
obj.refreshAll(obj.getCol()); // Discard any changes
pm.makePersistent(obj);
tx.commit();

感谢。

1 个答案:

答案 0 :(得分:0)

我猜您应该应用更改 AFTER 刷新对象或使其变为瞬态。 或者另一方面,做一些我真正想做的事情来了解JDO的工作原理,但我没有太多时间去研究。为什么不在最初查找对象之后,不要将其分离,而是将其保持在附加状态并在查找方法之外进行修改,然后在另一种方法中使其保持持久性?

让我感到困惑的是,在查找方法中,您不会关闭PersistenceManager,而在保存对象的后一种方法中,您将使用另一个PersistenceManager,这应该是触发异常,因为您正在使用与首先查找的对象不同的PersistenceManager来管理对象。

我仍在学习JDODatanucleus所以请期待我的建议可能不起作用。非常感谢您与我的建议分享您的经验。