何时hibernate二级缓存更新?

时间:2013-07-30 07:18:13

标签: database hibernate caching second-level-cache

我有亲子关系。

这种关系是这样的,可以有一组子,可以有父母。

有一段时间,来自父 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

有人可以告诉我这里发生了什么吗?

0 个答案:

没有答案