0

使用文档中的示例:我有通过连接表连接的医生和患者。现在我从医生那里删除了一个病人,效果很好,即连接表中的行消失了:

doctor.remove(patient);

有没有一种方法可以检索剩余的(n-1)名患者而无需从数据库中重新加载 Doctor,即

doctor.getAll(Patient.class);

在不重新加载医生的情况下执行此操作时,我仍然会得到刚刚删除的条目。缓存清除也不起作用。只有当我也从数据库重新加载医生时,删除的条目才消失。这是唯一可行的方法吗?

4

1 回答 1

0

这正是框架的工作原理。这段代码:

doctor.remove(patient);

从连接表中删除记录。之后,调用:

doctor.getAll(Patient.class);

将不会返回已移除的患者。我通过在https://github.com/javalite/activejdbc/blob/master/activejdbc/src/test/java/org/javalite/activejdbc/Many2ManyRelationshipTest.java中编写额外的测试方法对此进行了测试。

这是我添加的测试:https ://gist.github.com/ipolevoy/821e986c5c7deb28a90d 如您所见,第 9 行只有一个病人,因为另一个在第 7 行被移除。

您可以打开日志记录:http: //javalite.io/logging以查看框架正在执行哪些语句。

于 2015-05-31T15:42:19.000 回答