说明:
date_add函数的原型:date_add(time, interval duration MINUTE)
问题:
由于项目中要用到时间来过滤一部分信息,因此用到了date_add这样的SQL原生函数,但Hibernate的HQL语句中并不支持date_add函数的使用。
解决方法:
扩展org.apache.dialect.MySQLDialect类,因为Hibernate中HQL的函数是通过这个类来实现和SQL原生函数之间映射的。具体方法是定义一个MySQLDialect的子类ExtendedMySQLDialect,具体内容如下:
将这个类编译好的class文件放到hibernate.jar包中,这样就可以使用date_add函数了。因为项目中用到了Spring框架来管理sessionFactory,所以还要对应的修改sessionFactory的dialect属性为新扩展的ExtendedMySQLDialect类,这样就可以在工程中通过HQL使用date_add函数了。
在HQL中这样用:date_add函数的原型:date_add(now(), 1, WEEK)