使用文档中的示例:我有通过连接表连接的医生和患者。现在我从医生那里删除了一个病人,效果很好,即连接表中的行消失了:
doctor.remove(patient);
有没有一种方法可以检索剩余的(n-1)名患者而无需从数据库中重新加载 Doctor,即
doctor.getAll(Patient.class);
在不重新加载医生的情况下执行此操作时,我仍然会得到刚刚删除的条目。缓存清除也不起作用。只有当我也从数据库重新加载医生时,删除的条目才消失。这是唯一可行的方法吗?
使用文档中的示例:我有通过连接表连接的医生和患者。现在我从医生那里删除了一个病人,效果很好,即连接表中的行消失了:
doctor.remove(patient);
有没有一种方法可以检索剩余的(n-1)名患者而无需从数据库中重新加载 Doctor,即
doctor.getAll(Patient.class);
在不重新加载医生的情况下执行此操作时,我仍然会得到刚刚删除的条目。缓存清除也不起作用。只有当我也从数据库重新加载医生时,删除的条目才消失。这是唯一可行的方法吗?
这正是框架的工作原理。这段代码:
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以查看框架正在执行哪些语句。