`

让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支持这种数据库函数,下面的这个测试通过
Java代码
  1. public   class  MysqlDailetExtend  extends  MySQLInnoDBDialect {  
  2.     public  MysqlDailetExtend() {  
  3.         super ();  
  4.         registerFunction("date_add" new  SQLFunctionTemplate(Hibernate.DATE,  "date_add(?1, INTERVAL ?2 ?3)" ));  
  5.     }  
  6. }  
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方法了,好一个费劲啊,不过这种方法的调用对于提高开发效率还是很有必要的,并且类似于这种查 询在关于时间的查询中是经常遇到的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics