2016-12-01 5 views
0

私は以下のドメインクラスを持っており、グループ名で始まるすべてのグループを検索したい場合(グループ名を入力した場合)、groupStringsグループ文字列が入力されている):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

あなたのドメインは少しばかりです。私は1つではなく2つのドメインを作ります。グループドメインとグループストリングドメインが必要です。グループはhasMany GroupStringを持つことができ、GroupStringは単に文字列で、多分に属している可能性があります。私はそれがクエリを使ってそれを行う唯一の方法だと思います。 それ以外の場合は、すべてのグループを取得し、.find {閉鎖}

関連する問題