【问题标题】:JDO: How to make a detached object transient?JDO:如何使分离的对象瞬态?
【发布时间】:2012-09-03 04:02:20
【问题描述】:

我正在使用 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();

或从数据库刷新:

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

谢谢。

【问题讨论】:

    标签: persistence jdo datanucleus transient


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果您不分离,则无法在事务之外更改它。这个想法是改变它,但在makePersistent之前丢弃一些字段。在我给出的示例中,我在刷新后应用更改...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2012-06-04
    相关资源
    最近更新 更多