让hibernate支持date_add

今天做东西的时候想去查找某一天的记录数据,如果用单独的sql语句,对于mysql只需要time between 某天 and DATE_ADD((某天, INTERVAL 1 DAY);但是由于我使用的是hibernate,然后我就直接写成了 time between ?and DATE_ADD((?, INTERVAL 1 DAY);然后传递了两个参数进去,但是这是就报错了,说sql没有此函数,然后从网上查了好久,有人提示可以重写hibernate的dialect,是hibernate支持这种数据库函数,下面的这个测试通过
public class MysqlDailetExtend extends MySQLInnoDBDialect {
	public MysqlDailetExtend() {
		super();
		registerFunction("date_add", new SQLFunctionTemplate(Hibernate.DATE, "date_add(?1, INTERVAL ?2 ?3)"));
	}
}

 这个时候再使用hibernate查询的时候,time between ?and date_add((?, 1,DAY);这样就可以实现数据库里面的date_add方法了,好一个费劲啊,不过这种方法的调用对于提高开发效率还是很有必要的,并且类似于这种查询在关于时间的查询中是经常遇到的。

你可能感兴趣的:(sql,Hibernate,mysql)