【问题标题】:Select all events from a month in grails选择 grails 中一个月的所有事件
【发布时间】:2009-09-23 19:52:26
【问题描述】:

我是 groovy/grails 的新手,我正在尝试进行标准搜索,以查找一个月内的所有帖子,基本上是这样的:

def getUserMinutesForYear(User user, Date date){

    Date firstDate = new GregorianCalendar(date.year, Calendar.JANUARY, 1, 0, 0, 0).time
    Date lastDate = new GregorianCalendar(date.year, Calendar.DECEMBER, 31, 23, 59, 59).time

    def c = JobRegistration.createCriteria()

    def minutes = c.get {
        and{
            eq("user.id", user.id)
            between("job.happening", firstDate, lastDate)

        }

        projections {
            sum("minutesWorked")
        }
    }



    return minutes
}                  

领域类是

 class Job {

     String title
     String description
     Date   happening

     static hasMany = [registrations:JobRegistration]
 }


class User {
    static hasMany = [authorities: Role, registrations: JobRegistration]
    static belongsTo = Role
    String username
}

class JobRegistration {

    Job job
    User user

    Integer minutesWorked
    static belongsTo = [user:User,job:Job]

    static constraints = {
        user(blank: false)
        job(blank:false)
        minutesWorked(nullable :true)
    }

    String toString(){
        return user.userRealName
    }

}

现在,为什么我会得到这个异常?

org.codehaus.groovy.runtime.InvokerInvocationException: org.hibernate.QueryException: 无法解析属性:job.happening of: JobRegistration

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    你需要嵌套作业关系(你也可以只用 eq 和 user):

    def minutes = c.get {
        and{
                eq("user", user)
                job{
                    between("happening", firstDate, lastDate)
                }
    
        }
    
        projections {
                sum("minutesWorked")
        }
    }
    

    干杯

    【讨论】:

    • 那行得通。首先让我感到困惑的是,像 eq ("user.id",user.id) 这样的东西有效,而它对 job.happening 无效。事后看来,我可以看到 user.id 可能表示为原始 int 而 job.happening 是一个对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2017-07-19
    相关资源
    最近更新 更多