Условный Динамический Искатель в Граалях

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

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

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

Теперь у меня есть два поля в Employee LastDateAttended и LastDateSigned, и теперь я хочу, чтобы, если запись не имела LastDateAttended, то она должна была бы найти по LastDateSigned, в противном случае LastDateAttended, так что другое условие похоже

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

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

3 ответа

Решение
Employee.list().findAll { emp-> 
     emp.status == "INA" && ( emp.lastDateAttended!=null?
         emp.lastDateAttended.equals(dateObject):emp.lastDateSigned.equals(dateObject)
       ) 
}

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

Employee.createCriteria().list{
 and{
     eq('status','INA')
     or {
        eq('lastDateAttended',dateObject)
        eq('lastDateSigned',dateObject)
     }
  }    
}
Employee.findAllByStatusOrLastDateAttendedOrStatusAndLastDateAttended("INA",dateObject)
Другие вопросы по тегам