Pasquale Brunelli
Pasquale Brunelli

Reputation: 21

Grails: createCriteria wrong Results

I'm trying to get some data out of my Database by some criteria, but i won't geht the right results.

My Method:

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
}

The Method gets 2 arguments, a List of Dates and a userid.

Everything Worls finde and all println's are printed but there are always 0 @results.size.

The 3 Entrys look like

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

so there should be exact 1 result but all i get from the console is: The Range of dates is from today (12th june -2weeks)

Tue Jun 12 14:49:11 CEST 2012

Wed May 30 14:49:11 CEST 2012

0

I think i did something wrong with the criteria but i'm not able to resolve it for hours now. Other Threads didn't help me either.

thanks for your help

Upvotes: 0

Views: 644

Answers (1)

Pasquale Brunelli
Pasquale Brunelli

Reputation: 21

Okay Solved the Problem by Changing the criteria to:

    def c = Budget.createCriteria()
    def results = c.list {
        employees { eq("id", uid) }
        project{ eq("active", true) }
        and { le("validFrom",lastDate)}
        and { ge("validUntil",firstDate)      }
    }

Upvotes: 1

Related Questions