域设置。
Study {
Long id
String name
Site site
USState state
...
}
.
Site {
Long id
String name
...
}
.
Resource {
Long id
String name
Boolean active
USState state
...
}
.
SiteResource {
id composite: ['site', 'resource']
Site site
Resource resource
}
我有 2 个为研究填充的列表。一个是当前与站点关联的资源列表,另一个是可以与站点关联的可用资源列表。这些可用资源由 Active = true 并在与研究相同的 USState 中确定
我正在尝试编写一个标准以使其正常工作,但似乎无法做到。我需要显示所有处于活动状态的资源,与研究在同一 USState 中并且当前未与站点关联(当前关联在第一个表中)
return Resource.createCriteria().list(sort: params.sort, order: params.order, max: params.max, offset: params.offset) {
if (params.searchText) {
ilike("name", "%${params.searchText}%")
}
eq("usState", params.state)
eq("active", true)
ne "id" , new DetachedCriteria(SiteResource).build {
'in' ("resource", params.associatedResources.resource.id)
'in' ("site", params.associatedResources.site.id)
}
}
我还尝试了以下方法:
def siteResources = getSiteResourcesBySite(site).collect {
it.resource
}
def resources = resource.findAllByRefugeAndActiveNotInList(refuge, true, siteResources, [sort:"name"])
return resources.list(sort: params.sort, order: params.order, max: params.max, offset: params.offset)
我希望这是有道理的;我仍在试图弄清楚 DetachedQuery 是如何工作的。如果有更好的方法来完成这个任务,请赐教!