Вот пример того, как вы можете решить эту проблему.Предполагается, что у вас есть класс домена User
со свойством name
, которому вы хотите соответствовать.
// given a list of user names
List users = ['Test1', 'Test2', 'Test3', 'Test4']
// find all the users that match those names, and collect the matched names into a List
List matched = User.findAll("from User as u where u.name in (:names)", [names: users]).collect { it.name }
// remove the matched names from the user list and arrive at an 'unmatched' names list
List unmatched = users.minus(matched)
Это было записано на моей голове, поэтому, пожалуйста, прости любые опечатки или другиеслучайные предположения.
ОБНОВЛЕНО Поскольку вы, похоже, настроены на использование SQL, вы могли бы сделать что-то подобное вместо этого
List users = ['Test1', 'Test2', 'Test3', 'Test4']
List placeholders = []
users.each { placeholders << '?' }
String select = "select distinct name from table a,table b where a.id=b.id and b.name in (${placeholders.join(',')})"
List matched = sql.rows(select, users)
List unmatched = users.minus(matched)