将 DATE 函数与 HSQL 一起使用时出错

Posted

技术标签:

【中文标题】将 DATE 函数与 HSQL 一起使用时出错【英文标题】:error using DATE function with HSQL 【发布时间】:2013-12-20 21:14:29 【问题描述】:

我有一个使用 SQL 访问 DB2 数据库的项目。在代码上运行 junit 测试用例时,我使用 HSQL 数据库。 java 项目通过 iBATIS 使用 SQL。

如果 HSQL 遇到 DATE 函数,例如 DATE(STATUS_CREATE_TS),我会遇到错误,有什么解决方案的想法吗?

--- 原因:java.sql.SQLException:用户缺少权限或找不到对象:DATE at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 在 org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203) 在 org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:268)

谢谢。

【问题讨论】:

错误信息是什么意思? --- 原因:java.sql.SQLException:用户缺少权限或找不到对象:DATE 在 org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98) 【参考方案1】:

该函数是 DB2 特有的,HSQLDB 不直接支持。

您可以将测试的函数定义为:

 create function date(ts timestamp) returns date return cast(ts as date);

【讨论】:

感谢您的回复。在 HSQL 哪里定义这个函数? 这是一条SQL语句。你执行一次。 DB2 允许类似地定义函数。【参考方案2】:

你试过HSQL设置吗:

SET DATABASE SQL SYNTAX DB2 TRUE

如 http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html 中所述(表 12.27)。

【讨论】:

我相信我最初尝试过这种方法,但没有奏效。我实施了 fredt 提出的解决方案,它奏效了。谢谢。

以上是关于将 DATE 函数与 HSQL 一起使用时出错的主要内容,如果未能解决你的问题,请参考以下文章

HSQL 访问被拒绝加载文件

将 unique_ptr 与成员函数指针一起使用时出错

尝试将 dispatch_async 与 cocos2d 函数一起使用时出错

尝试将指针与结构一起使用时出错

HSQL和MySQL的区别

将码头与 Repast simphony 一起使用时出错