有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate方言+datediff函数

我有一个问题,mysql中datediff的语法与hsqldb中的不同:

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

hibernate中的方言通常可以解决这些问题,但是我似乎无法找到一种方法来为hibernate创建datediff限制。这是一个真正的麻烦,因为它阻止我使用内存中的hsql数据库进行单元测试,因为我必须在sql语句中对datediff的格式进行“硬编码”

如果有人对此事有意见,我们将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    我想说,最简单的解决方案是创建自己的定制HSQLDB方言,扩展现有的HSQLDB方言。然后,在构造函数中注册一个函数来处理要转换为datediff(interval,date1,date2)的datediff(date1,date2),前提是interval是一个静态值。比如:

    registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );