首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails: createCriteria错误结果

Grails: createCriteria错误结果
EN

Stack Overflow用户
提问于 2012-06-12 20:53:04
回答 1查看 632关注 0票数 0

我试图通过一些标准从我的数据库中获取一些数据,但我不会得到正确的结果。

我的方法是:

代码语言:javascript
复制
public ArrayList getAllBudgetsByUserAndDateAndActive(ArrayList dates, uid){
    ArrayList BudgetList = new ArrayList()
    Date lastDate = dates.get(dates.size() - 1).date
    Date firstDate = dates.get(0).date
    println lastDate
    println firstDate
    def i

    def c = Budget.createCriteria()
    def results = c {
        employees { eq("id", uid) }
        and{
            le("validUntil",firstDate)
            ge("validFrom",lastDate)
        }
        project{ eq("active", true) }
    }
    println results.size
    for(i=0;i<results.size;i++){
        println "Budgets FROM:" + results.getAt(i).validFrom
        println "Budgets UNTIL:" + results.getAt(i).validUntil

}

return null
}

该方法获得2个参数、一个日期列表和一个userid。

所有的@results.size和所有println都是打印出来的,但始终是0。

这3个入口看起来像

代码语言:javascript
复制
    def budget1 = new Budget(billable:"true",
            numberOfPersonDays:15,
            project:project1,
            dailyRate:1.5,
            validFrom:new Date("11/11/2011"),
            validUntil:new Date("12/1/2011"),
            employees:[employee1, employee2]).save()

    def budget2 = new Budget(billable:"true",
            numberOfPersonDays:15,
            project:project1,
            dailyRate:1.5,
            validFrom:new Date("6/05/2012"),
            validUntil:new Date("6/12/2012"),
            employees:[employee1]).save()


    def budget3 = new Budget(billable:"true",
            numberOfPersonDays:15,
            project:project2,
            dailyRate:1.5,
            validFrom:new Date("6/1/2011"),
            validUntil:new Date("06/04/2011"),
            employees:[employee1]).save()

所以应该有确切的1个结果,但我从控制台得到的是:日期范围是从今天(6月12日-2周)

Tue Jun 12 14:49:11 CEST 2012

Wed May 30 14:49:11 CEST 2012

我认为我在标准上做错了什么,但我现在几个小时都不能解决它。其他的线程也帮不了我。

谢谢你的帮忙

EN

回答 1

Stack Overflow用户

发布于 2012-06-13 15:29:45

好的,通过将条件更改为:

代码语言:javascript
复制
    def c = Budget.createCriteria()
    def results = c.list {
        employees { eq("id", uid) }
        project{ eq("active", true) }
        and { le("validFrom",lastDate)}
        and { ge("validUntil",firstDate)      }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10997065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档