Grails DetachedCriteria加载了太多记录

时间:2016-11-24 07:36:49

标签: grails gorm

场合: 在我们的数据模型中,AbstractResource有许多Availability。我们希望找到符合一些条件且属于一组AbstractResources的可用性。 InternalResourceExternalResource都延伸AbstractResource

我们搜索我们对可用性感兴趣的资源集。这是通过前两个DetachedCriteria来完成的。 InternalResourceExternalResource需要以不同方式进行过滤。这意味着我们不能使用JOIN将前两个标准合并到最后一个标准中。

问题: 当我们执行此操作时,我们希望仅获得resources中的资源的可用性。不幸的是,这不是总是的情况。它不时有效。但有时它包含其他资源的可用性。

我们使用Hibernates Criteria进行了快速测试。当我们测试它时,它运作良好。

DetachedCriteria的使用是否存在已知限制,因为它们未与特定的休眠会话相关联?

DetachedCriteria<InternalResource> intResourceCriteria = new DetachedCriteria<>(InternalResource)
intIesourceCriteria.build {
    ...
}
def resources = intResourceCriteria.list()

DetachedCriteria<ExternalResource> extResourceCriteria = new DetachedCriteria<>(ExternalResource)
resourceCriteria.build {
    ...
}
resources.addAll(extResourceCriteria.list())

DetachedCriteria<Availability> availabilityCriteria = new DetachedCriteria<>(Availability)
availabilityCriteria.build {
    'in'('resource', resources)
    ...
}
def availabilities = availabilityCriteria.list()

我们使用以下版本:

  • Hibernate 4.3.6.1
  • Grails 2.4.4

0 个答案:

没有答案