2 つの単純なドメイン クラスがあるとします。
class A {
String name
static hasMany = [bs: B]
}
class B {
String title
}
ここで、次のような構造のアイテムのリストを作成したいと思います。
// id of A instance, name of A instance, comma separated list of Bs titles associated to A istance
1, "A1", "B1, B2"
2, "A2", "B2, B5"
...
これを取得するための私の基準は次のとおりです。
def list = A.withCriteria {
createAlias 'bs', 'bs', CriteriaSpecification.LEFT_JOIN
projections {
property 'id'
property 'name'
property 'bs.title' // this is the interesting line
}
}
これは明らかに、私の A インスタンスに関連する B 要素の最初のタイトルのみを取得します。このような:
1, "A1", "B1"
2, "A2", "B2"
...
さて、実際のシナリオはもう少し複雑です。要点を説明するために単純化しました。つまり、bs タイトルに対して mysql group_concat と同じ効果を得るにはどうすればよいでしょうか?
1 つの基準でこれを実行しようとしていますが、それが不可能な場合は、別の解決策について検討させていただきます。