2015-10-19 3 views
1

так я требуюсь что-то вроде динамического искателя должен меняться в соответствии с условием, позвольте мне объяснить код, что я имею в видуусловных динамические нашедшие в Грааль

код ниже найти все сотрудник по статусу и lastdateattended

def employee = Employee.findAllByStatusAndLastDateAttended("INA",dateObject) 

теперь у меня есть два поля в Сотрудника LastDateAttended и LastDateSigned, и теперь я хочу, если запись не имеет LastDateAttended, то он должен найти по LastDateSigned, в противном случае LastDateAttended, поэтому еще одно условие, как

 def employee = Employee.findAllByStatusAndLastDateAttended("INA",dateObject) 

и я как-то хочет присоединиться и использовать как запрос, основанный на состоянии, это может быть достигнуто?, Если это возможно, пожалуйста, помогите

+0

кроме такой строки кода будет нечитабельно долго, я ожидаю, что это не сработает. почему бы не использовать один из многих способов, с помощью которых Grails может написать хороший (понятный) запрос, который делает это? – cfrick

ответ

0
Employee.list().findAll { emp-> 
    emp.status == "INA" && (emp.lastDateAttended!=null? 
     emp.lastDateAttended.equals(dateObject):emp.lastDateSigned.equals(dateObject) 
     ) 
} 
+1

загружает весь список в ваше приложение. фильтрация должна выполняться в БД – cfrick

2

Я думаю, что критерии запроса имеет смысл здесь, что-то вроде следующих

Employee.createCriteria().list{ 
and{ 
    eq('status','INA') 
    or { 
     eq('lastDateAttended',dateObject) 
     eq('lastDateSigned',dateObject) 
    } 
    }  
} 
-1
Employee.findAllByStatusOrLastDateAttendedOrStatusAndLastDateAttended("INA",dateObject) 

 Смежные вопросы

  • Нет связанных вопросов^_^