如何使用createCriteria在Grails中执行深层查询

时间:2018-04-30 15:17:10

标签: grails gorm eager-loading createcriteria

我有一些grails域类,它们之间有关系,就像这样......

Domain A {
    ...
    Domain B
}

Domain B {
    ...
    Domain C
}

Domain C {
    ...
    String name
    String attr1
    String attr2
}

如何使用withCriteria对A执行热切提取,以便与B and C相关的A实例包含在我的结果中 像这样...

List<A> aList = [..., B: [..., C: [... name: 'name', attr1: 'attr1', attr2: 'attr2']]]

1 个答案:

答案 0 :(得分:0)

您描述预期结果的方式很奇特,我无法确切地说出您想要的结果......

JSON

声明的var things = { "First Item": {"name": "First Item", "url":"firstitem" }, "Second Item": {"name": "Second Item", "url":"seconditem" } }; Object.keys(things). filter(k => things[k].url === "firstitem"). map(k => things[k]) // [ { name: 'First Item', url: 'firstitem' } ] 类型建议您想要List<A> aList = [..., B: [..., C: [... name: 'name', attr1: 'attr1', attr2: 'attr2']]] ,但您显示的值看起来像aList,其中包含一些嵌套的List<A>

如果你执行这样的查询......

Map

从中返回的内容为Map def aList = A.withCriteria { // your criteria goes here } ,每个List将引用A,每个A将引用B }}

B

我希望有所帮助。

基于评论的编辑:

目前还不清楚您是否希望始终热切地提取它们,或者在表达查询时是否要表达它们。听起来好像你想在表达查询时表达它,这可以这样做......

C