我有以下域类,并希望查找以组名开头的所有组(如果输入了组名)并包含groupStrings之一(如果输入了组字符串):
class Group {
String name
List groupStrings
static hasMany = [
groupStrings : String
]
}
我试过了:
String groupNameToFind = ...
String groupStringToFind = ...
List<Long> groupIds = Group.createCriteria().listDistinct() {
projections {
property 'id'
}
if(groupNameToFind) {
ilike('name', groupNameToFind + '%')
}
if(groupStringToFind) {
eq('groupStrings', groupStringToFind)
}
}
我也尝试过:
List<Long> groupIds = Group.createCriteria().listDistinct() {
projections {
property 'id'
}
if(groupStringToFind) {
createAlias('groupStrings', 'gs', JoinType.LEFT_OUTER_JOIN)
eq('gs', groupStringToFind)
}
if(groupNameToFind) {
ilike('name', groupNameToFind + '%')
}
}
在尝试查找组字符串时,这两个都会产生错误。什么是正确的语法?
答案 0 :(得分:0)
您的域名有点奇怪。我会创建两个域而不仅仅是一个域。您需要一个组域和一个GroupString域。该组可以有一个hasMany GroupString,GroupString可以只是一个字符串,也许属于。我认为这是通过查询来实现它的唯一方法。 否则你可以获得所有组并执行.find {closure}