Details
Description
I have to following method:
def criteria = JournalEntry.createCriteria();
criteria.list {
and {
le("validFrom", new Date())
ge("validTo", new Date())
}
order("name")
}
If I test this piece of code I get the next error message
groovy.lang.MissingMethodException: No signature of method: grails.gorm.CriteriaBuilder.le() is applicable for argument types: (java.lang.String, java.util.Date) values: [validFrom, Wed Aug 03 09:35:32 CEST 2011] Possible solutions: lt(java.lang.String, java.lang.Object), lte(java.lang.String, java.lang.Object), ne(java.lang.String, java.lang.Object), id(), eq(java.lang.String, java.lang.Object), gt(java.lang.String, java.lang.Object)
So I changed the code to use lte and gte
Now when I run the application (run-app) I get the 'slightly' different error message
groovy.lang.MissingMethodException: No signature of method: grails.orm.HibernateCriteriaBuilder.lte() is applicable for argument types: (java.lang.String, java.util.Date) values: [validFrom, Wed Aug 03 09:46:41 CEST 2011] Possible solutions: le(java.lang.String, java.lang.Object), lt(java.lang.String, java.lang.Object), ge(java.lang.String, java.lang.Object), gt(java.lang.String, java.lang.Object), like(java.lang.String, java.lang.Object), ne(java.lang.String, java.lang.Object)
I'm a bit confused here what should I be using and who is right, my unit tests or my running application?
Added the error message from my running application, I noticed that it's slightly different. Seems that my tests are using grails.gorm.CriteriaBuilder where the application is using grails.orm.HibernateCriteriaBuilder and those don't share the same footprint