Java Hibernate:将mysql查询Datedif转换为HQL查询

Java Hibernate:将mysql查询Datedif转换为HQL查询,java,mysql,hibernate,Java,Mysql,Hibernate,这是我在mysql中的查询 SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate 如何转换为Hibernate查询语言我不认为您可以将这个特定的mysql函数转换为JPA/HQL(如果需要,您仍然可以使用一些本机查询)。更好的方法是使用第三方库,如[Joda time][1]来计算两个日期之间的天数。我真的不明白为什么我们应该使用数据库来实现这一点。通过扩展mysql方言并使用 创建上面的类,并使用CustomMySQL5InnoDBDi

这是我在mysql中的查询

SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate

如何转换为Hibernate查询语言

我不认为您可以将这个特定的mysql函数转换为JPA/HQL(如果需要,您仍然可以使用一些本机查询)。更好的方法是使用第三方库,如
[Joda time][1]
来计算两个日期之间的天数。我真的不明白为什么我们应该使用数据库来实现这一点。

通过扩展mysql方言并使用


创建上面的类,并使用CustomMySQL5InnoDBDialent而不是MySQL5InnoDBDialent更新hibernate配置
public class CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {

  public CustomMySQL5InnoDBDialect () {
    super();
    registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(?1, ?2)" ) );
 }

}