我有,用于DATEDIFF在MySQL的语法是从不同的问题HSQLDB:

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

在Hibernate中方言通常解决这些问题,但我似乎并没有能够找到创造冬眠DATEDIFF限制的一种方式。这是一个真正的滋扰,因为它阻止我的单元测试与一个内存HSQL数据库,因为我不得不“硬编码” DATEDIFF的在SQL语句的格式。

如果任何人有这个问题的建议,将不胜感激。

有帮助吗?

解决方案

我会说,最简单的解决方案是创建自己的自定义HSQLDB方言,延长现有的HSQLDB方言。然后,在构造函数中,注册一个函数来处理DATEDIFF(DATE1,DATE2)被翻译成DATEDIFF(间隔,DATE1,DATE2),提供该间隔将是一个静态值。是这样的:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top