ドメインのセットアップ。
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 つのリストがあります。1 つは、サイトに現在関連付けられているリソースのリストです。もう 1 つは、サイトに関連付けることができる利用可能なリソースのリストです。これらの利用可能なリソースは、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 がどのように機能するかを理解しようとしています。このタスクを達成するためのより良い方法があれば、教えてください!