createAlias - 如何在GORM中指定LEFT join的ON状态?

时间:2015-03-28 03:55:45

标签: grails left-join gorm

我正面临默认情况下默认LEFT join加入非意外情况的情况,我想明确定义它,我该怎么做?

e.g。 createAlias('fault.tgmap', 'tg', CriteriaSpecification.LEFT_JOIN)默认选择了错误的列,即group_id而不是fault_id(请注意,tg在生成的sql查询中有两列fault_idgroup_id)。

如何明确指定ON应该发生哪种条件,即fault.id = tgmap.fault_id instead of fault.id = tgmap.group_id?

要提供特定于域的信息,trace,fault和tracegroup16是域表。

def results = trace.list(max:max, offset:offset) {      

        createAlias('fault', 'fault',CriteriaSpecification.LEFT_JOIN)
        createAlias('fault.tgmap', 'tg', CriteriaSpecification.LEFT_JOIN)
        createAlias('tg.traceGroup16','tr', CriteriaSpecification.LEFT_JOIN)
        projections
        {
            property('fault.id')
            property('tr.geckId')
        }
}

1 个答案:

答案 0 :(得分:1)

看看你的模型看起来很有用,但我认为你可以这样做:

Fault.createCriteria().list() {
    createAlias('tgmap', 'tg', CriteriaSpecification.LEFT_JOIN)
    eqProperty('tg.fault.id', 'id')
}

Reference

相关问题