Използвам Grails и createCriteria, за да стесня резултатите от търсенето въз основа на това дали дадена дата е между 2 въведени от потребителя дати. Проблемът, който имам, възниква, когато всички свойства на датата, които се търсят, са нулеви. Това причинява грешка, казвайки
не може да получи свойството dayOfTheMonth на java.lang.String
Има ли начин да се заобиколи това? Ако променя базата данни, за да дам на един от потребителите дата, когато работи, това се случва само когато всички са нулеви.
def c = User.createCriteria()
DateTime tempDobStart = new DateTime(Integer.parseInt(params.dobStart_year), Integer.parseInt(params.dobStart_month), Integer.parseInt(params.dobStart_day), 0, 0)
DateTime tempDobEnd = new DateTime(Integer.parseInt(params.dobEnd_year), Integer.parseInt(params.dobEnd_month), Integer.parseInt(params.dobEnd_day), 0, 0)
def results = c.list(params) {
and {
if (username) {
ilike("username", '%' + username.trim() + '%')
}
if (firstName) {
ilike("firstName", '%' + firstName.trim() + '%')
}
if (lastName) {
ilike("lastName", '%' + lastName.trim() + '%')
}
if (tempDobStart && tempDobEnd) {
between("dob", tempDobStart, tempDobEnd)
}
}
return results
isNotNull("dob")
в допълнение към критерияbetween(...)
, за да избегнете сравняването на нулеви стойности с дати? - person Steinar   schedule 28.02.2014