我有亲子关系。
这种关系是这样的,父可以有一组子,子可以有父母。
有一段时间,来自父 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 < / strong>不 P2 。
缓存区域的timeToLiveSeconds 为 600 ,如果我检索到一组子项,我可以看到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 )
有人可以告诉我这里发生了什么吗?