0

親子関係があります。

この関係は、が一連の子を持つことができ、が一連の親を持つことができるようなものです。

ある時点で、親P1から子C1が削除され、別の親P2に割り当てられます。

私がしていたことは:

Parent p1 = myDao.getParent(p1_oid);
Child c1 = p1.getChild(child_oid);
p1.removeChild(c1);
Parent p2 = myDao.getParent(p2_oid);
p2.addChild(c1);

myDao.merge(p1);
myDao.merge(p2);

このコードは、データベース テーブルを適切に更新していました。しかし、私のコードでは、myDao.getAllChild()を使用して子のセットを取得しているとき、 C1の親はまだP1ではなくP2です。

キャッシュ領域のtimeToLiveSeconds600で、10 分 (600 秒) 後に子のセットを取得すると、親が適切に更新されていることがわかります。つまり、c1の親はp2になりました。

ここでの私の質問は、merge() を実行したときにキャッシュが更新されなかったのはなぜですか?

上記のコードを少し変更しました:

Parent p1 = myDao.getParent(p1_oid);
Child c1 = p1.getChild(child_oid);
p1.removeChild(c1);

Parent p2 = myDao.getParent(p2_oid);

 //added this line.
c1.addParent(p2);

p2.addChild(c1);

myDao.merge(p1);
myDao.merge(p2);

myDao.getAllChild() を実行しているときに、子の更新されたセットを取得できます(つまり、C1の親をP2として)

ここで何が起こっているのか誰か教えてもらえますか?

4

0 に答える 0