У меня есть следующий класс домена и вы хотите найти все группы, начинающиеся с имени группы (если имя группы введено) и содержат одну из группStrings (if строка группы вводится):Grails 3 - использование критериев для поиска строки в списке строк
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 + '%')
}
}
Оба они создают ошибку при попытке найти групповую строку. Каков правильный синтаксис?