2016-12-01 79 views
0

我有以下的域類,並希望找到以組名稱開頭的所有組(如果輸入組名稱)幷包含groupStrings之一(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 + '%') 
    } 
} 

這兩個都在嘗試查找組字符串時產生錯誤。什麼是正確的語法?

回答

0

您的域名有點奇怪。我會讓兩個域不只是一個。您需要一個組域和一個GroupString域。該組可以有一個hasMany GroupString,並且GroupString可以只是一個字符串,也許屬於。我認爲這將是通過查詢完成它的唯一方法。 否則你可以得到所有的組,並做一個.find {closure}

相關問題