(从grailsforum.co.uk这是跨张贴)GORM查询生成数据库错误(Grails的1.1.1)
大家好,我是比较新的的Grails(和Spring,Hibernate的,等等),所以请原谅我,如果这是一个noob问题。谷歌搜索让我无处可寻,但这是一个相当难以搜索的问题。
当我运行一个特定的GORM查询(在grails 1.1.1中)时,它通常可以正常工作,但是在数据库中没有匹配的记录的情况下,我不会返回任何内容,而是会立即得到一个异常冒泡从数据库驱动程序级别。我想知道这是否与我的本地开发数据库运行Oracle的特定风格有关,但在内存中的JDBC数据库上运行时,以及在具有与我们的数据库等效的数据库的远程开发服务器上生产服务器使用。据我所知,它似乎在查询实际上解析为无效的SQL。
该查询是在领域类CourseTerm,它代表大学的一个学期。这个类将开始日期和结束日期定义为属性。我查询的目的是选择设置在给定日期的所有活动过程中的术语(可能有多个,因为它们可以重叠),如下图所示:
def currentCourseTerms(date = new Date()) {
return CourseTerm.findAllByCourseStartDateLessThanAndCourseFinishDateGreaterThan(date, date)
}
正如我说的,如果有任何课程而言,这完美的作品与查询匹配。但是,在没有条款是当前的情况下,请求失败,我得到下面的输出:
Error 500: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
Servlet: grails
URI: /ltrp/grails/scheduleableCourse/list.dispatch
Exception Message: ORA-00936: missing expression
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
Class: ScheduleableCourseController
在我的工作站在那里我得到的日志输出,我也看到了这一点:
2012-03-23 15:04:18,664 [[email protected]] ERROR util.JDBCExceptionReporter - ORA-00936: missing expression
我研究和一般直觉告诉我,这可能是Grails或Spring中的一个bug,并且解决方案将更新为更新版本的Grails。这绝对是在路线图上,因为我不是在最好的时候运行过时的web应用程序的粉丝,但是我最近尝试升级到最新的1.x版本并不成功,而且我也没有现在有时间与它斗争。
我正在通过捕获异常时查询被调用,但有足够的随机错误显示在我们的日志文件中已经没有添加更多,我想这个功能正常,如果可能的话。如果任何人可以告诉我一个解决方案或更优雅的解决方法,或至少告诉我,如果这是一个已知的问题,我将非常感激。