Hibernate HSQLDB-日期格式:转换中的数据类型不兼容或日期时间格式无效

Hibernate HSQLDB-日期格式:转换中的数据类型不兼容或日期时间格式无效,hibernate,oracle10g,hsqldb,dbunit,Hibernate,Oracle10g,Hsqldb,Dbunit,我正在Hsqldb中进行集成测试。我的生产数据库是Oracle数据库 版本 我的问题 当我必须测试包含查询的方法时,我遇到了两个不同的异常,其中where条件询问日期: org.hsqldb.HsqlException: incompatible data types in combination 或 导致异常的代码 下面的代码导致了第一个异常(组合中的数据类型不兼容) 下面的代码导致了第二个异常(无效的日期时间格式) 我是如何试图解决这个问题的 1) 显然,问题源于日期格式。Hsqldb支持

我正在Hsqldb中进行集成测试。我的生产数据库是Oracle数据库

版本 我的问题 当我必须测试包含查询的方法时,我遇到了两个不同的异常,其中
where
条件询问日期:

org.hsqldb.HsqlException: incompatible data types in combination

导致异常的代码

下面的代码导致了第一个异常(组合中的数据类型不兼容)

下面的代码导致了第二个异常(无效的日期时间格式)

我是如何试图解决这个问题的 1) 显然,问题源于日期格式。Hsqldb支持
'yyyy-MM-dd'
日期格式,因此当我将
更改为_char(sysdate,'dd/MM/yy')
并将
01/01/2016
更改为
1995-01-01
时,它运行良好

但是,我无法更改这些方法的日期格式

2) 经过再三考虑,我考虑过修改hsqldb源代码,但似乎有点激进

除了后者,还有其他选择吗


谢谢您抽出时间。

不要尝试设置日期格式。改为使用带命名参数的查询。 然后可以对所有数据类型使用setter。见下例:

String hql = "from Player player where player.creationDate = :date";
List result = session.createQuery(hql)
.setDate("date", new Date()).list();

使用命名参数并使用setDate函数代替为什么要将日期存储为
varchar
?我不是。to_char(date,'fmt')是一个Oracle函数,允许我以另一种格式显示日期。(默认格式为:dd-mon-yy)由于我的oracle数据库使用dd/MM/yy,所以我不得不使用此函数。
org.hsqldb.HsqlException: data exception: invalid datetime format
 select = "from Player player where player.creationDate = to_char(sysdate,'dd/MM/yy')"
 select = "from Player player where player.creationDate > '01/01/2016'"
String hql = "from Player player where player.creationDate = :date";
List result = session.createQuery(hql)
.setDate("date", new Date()).list();