2013-10-04 33 views
1

我有2個領域類:項目和用戶。Grails - 通過在父集合中的子對象obj的存在找到所有

項目hasMany on用戶通過SortedSet稱爲allowedUsers。用戶不屬於項目。

我想查找允許特定用戶查看的所有項目。所以嘗試像這樣的語法:

Project.findAll{ it.allowedUsers.contains(userA) } 
Project.findAll{ userA in it.allowedUsers } 

這些不工作。而查找符號似乎不支持像ThatContains運算符那樣的東西。

我該如何實現我的目標?

+0

此外,個createCriteria似乎並不支持 '包含' 操作符讓堂不認爲這會起作用。 – shuttsy

回答

1

您也可以嘗試where查詢

def query = Project.where{ 
    allowedUsers{id == userA.id} 
} 

def results = query.list() 

或HQL

def query = """ 
      select p from Project as p 
      inner join p.allowedUsers as user 
      where user.id = :user 
      """ 

def results = Project.executeQuery(query, [user: userA.id]) 
相關問題