Grails дополнительные столбцы в таблице или списке - PullRequest
2 голосов
/ 20 декабря 2010

Я несколько дней пытаюсь получить список из моих данных.Домен выглядит так:

class Alpha {    
    String a
    String b
    etc.
    static hasMany = [beta:Beta]

}

class Beta {
    String a
    Integer foo
    String status
    static belongsTo = [alpha:Alpha]
    static constraints = {
        status(nullable:false, inList:["val1","val2","val3", "val4"])
    }
}

Я бы хотел иметь в Alpha сумму всех Beta.foo и всех Beta.foo в определенном состоянии.Лучше всего будет что-то вроде дополнительной строки (Integer sumVal1 ...).

Я пробовал именованные запросы:

static namedQueries = {
        erledigterProbeAufwend {
            createAlias ('Beta', 'b')
            eq ('b.status', 'val1')
            projections {
                groupProperty('b.alpha')
                sum('b.foo', 'sumFooVal1')
            }
        }
}

Но это просто дает мне одну сумму за раз.

Я с нетерпением жду, чтобы получить помощь по этому вопросу.

Привет Bas

Ответы [ 2 ]

3 голосов
/ 20 декабря 2010

Это может быть вычислено поле формулы , но с уловкой подзапроса :

static mapping = {
    betaCount formula: "(SELECT count(*) FROM Beta b WHERE b.alpha_id = id and b.status in('a', 'b'))"
}
0 голосов
/ 20 декабря 2010

Создайте временные переменные в вашем классе Alpha и заполните их в событии onLoad.

class Alpha {    
    String a
    String b
    etc.
    static transients = ["sumVal1",...]
    static hasMany = [beta:Beta]

    def onLoad = {
       sumVal1 = ....
    }    

}
...