Cannot obtain globalId for an object which is registered in an other than the databaseContext's active editingContext, object: {values = {templateGlobalKey =<com.webobjects.foundation...;>;
長らく上記のようなエラーが取れなかったんだが,原因はあまりに初歩的なミスだった.
EOEditingContext editingContext = new EditingContextGetter(); try { editingContext.lock(); Foo foo = (Foo) EOUtilities.localInstanceOfObject(editingContext, getFoo()); Bar bar = (Bar) EOUtilities.localInstanceOfObject(editingContext, getBar()); //Bar bar = this.getBar(); Connector.connect(foo, bar); editingContext.saveChanges(); } catch (Exception e) { setErrorMessage(e.getMessage()); } finally { editingContext.unlock(); }
あ〜,う〜,お〜. saveChanges() で永続化する際に使用するオブジェクトは単に参照するだけではダメで, EOUtilities.localInstanceOfObject() にエディティング・コンテクストとともに渡して取得しなければならない.これを片一方だけしか通してなかったという「何やっとんぢゃ,お前は」的なポカミス.繋げられる方だけしか通してなかった.あ〜も〜メンドい.鬱だ死のう.
0 件のコメント:
コメントを投稿