2012-06-12 3 views
0

Я пытаюсь получить некоторые данные из своей базы данных по некоторым критериям, но Я не буду давать правильные результаты.Grails: createCriteria wrong Результаты

Мой метод:

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 аргумента, список дат и идент.

Все изображения Worls finde и все println напечатаны, но всегда есть 0 @ results.size.

В 3 Entrys выглядеть

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 результат, но все я получаю из консоли: Диапазон дат с сегодняшнего дня (12 июня) -2weeks

вт 12 июня 14:49:11 CEST 2012

ср 30 мая 14:49:11 CEST 2012

Я думаю, что я сделал что-то неправильно с критериями, но я не могу разрешить его часами. Другие темы мне тоже не помогли.

спасибо за вашу помощь

+0

Где делает 'uid' значение взялось? Если из параметров убедитесь, что вы преобразовали его в нужный тип, например. 'params.empId как Long'. –

ответ

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)  } 
    } 
Смежные вопросы