0

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

我的方法:

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 个参数,一个日期列表和一个用户 ID。

Worls 找到的所有内容和所有 println 都已打印,但 @results.size 始终为 0。

3个条目看起来像

    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 周)

2012 年 6 月 12 日星期二 14:49:11 CEST

2012 年 5 月 30 日星期三 14:49:11 CEST

0

我认为我的标准做错了,但我现在几个小时都无法解决。其他线程也没有帮助我。

感谢您的帮助

4

1 回答 1

1

好的,通过将标准更改为:

    def c = Budget.createCriteria()
    def results = c.list {
        employees { eq("id", uid) }
        project{ eq("active", true) }
        and { le("validFrom",lastDate)}
        and { ge("validUntil",firstDate)      }
    }
于 2012-06-13T07:29:44.773 回答