【发布时间】:2012-03-25 20:40:37
【问题描述】:
(这是从 grailsforum.co.uk 交叉发布的)
大家好,我对 Grails(以及 Spring、Hibernate 等)比较陌生,所以如果这是一个菜鸟问题,请原谅我。谷歌搜索让我无处可去,但这是一个很难搜索的问题。
当我运行一个特定的 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 [13262636@qtp-21448718-2] ERROR util.JDBCExceptionReporter - ORA-00936: missing expression
我的研究和一般直觉告诉我,这可能是 Grails 或 Spring 中的一个错误,解决方案是更新到更新版本的 Grails。这绝对是在路线图上,因为我不喜欢在最好的时候运行过时的 webapps,但是我最近尝试升级到最新的 1.x 版本没有成功,而且我没有现在有时间与之抗争。
我正在通过在调用查询时捕获异常来解决这个问题,但是我们的日志文件中已经出现了足够多的随机错误,而没有添加更多错误,我希望尽可能让它正常运行。如果有人能给我建议一个解决方案或更优雅的解决方法,或者至少告诉我这是一个已知问题,我将不胜感激。
【问题讨论】:
标签: sql grails grails-orm