2

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

谢谢。

4

1 回答 1

0

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

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

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

于 2013-03-22T23:45:03.387 回答