场合:
在我们的数据模型中,AbstractResource
有许多Availability
。我们希望找到符合一些条件且属于一组AbstractResources的可用性。 InternalResource
和ExternalResource
都延伸AbstractResource
。
我们搜索我们对可用性感兴趣的资源集。这是通过前两个DetachedCriteria
来完成的。
InternalResource
和ExternalResource
需要以不同方式进行过滤。这意味着我们不能使用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()
我们使用以下版本: