2015-10-07 4 views
0

Используя CreateCriteria, я хочу сравнить два списка и проверить, есть ли хотя бы один элемент в groups, присутствующий в users. Есть что-то вроде eq, чтобы выполнить это?Grails/CreateCriteria - сравните два списка

домена

class User { 
    String login 
    static hasMany = [groups = String] 
} 

class Project { 
    String name 
    static hasMany = [users = User] 
} 

CreateCriteria

def UserInstance = User.get(1) 

def idList = Project.createCriteria().list() { 

    projections { distinct ("id") 
     property("name") 
     property("id") 
    } 

    eq("users.login", UserInstance.groups) //check if there are at least one element in groups list present in users list. 
    order("name","desc") 

} 

ответ

2

Да, вы можете использовать inList(String propertyName, Collection c) так:

def UserInstance = User.get(1) 

def idList = Project.withCriteria { 

    projections { 
     distinct("id") 
     property("name") 
     property("id") 
    } 

    users { 
     inList("login", UserInstance.groups) 
    } 

    order("name","desc") 
}