Hibernate的方言+ DATEDIFF函数
题
我有,用于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)" ) );
不隶属于 StackOverflow