Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HQL日期差(分钟)_Java_Sql_Hql - Fatal编程技术网

Java HQL日期差(分钟)

Java HQL日期差(分钟),java,sql,hql,Java,Sql,Hql,我有一个实体类Foo @Entity public class Foo { @Basic @Column("Date_From) Date dateFrom; //... } 我需要从中获取日期和当前日期之间的差值,然后获取它们的mod 在sql中是这样的 DATEDIFF(MINUTE, ct.dateFrom, :date) % 120 但是HQL不支持DATEDIFF函数,我已经尝试将它添加到方言中 registerFunction("DATEDIFF_MINU

我有一个实体类Foo

@Entity
public class Foo {
   @Basic
   @Column("Date_From)
   Date dateFrom;
   //...
}
我需要从中获取日期和当前日期之间的差值,然后获取它们的mod

在sql中是这样的

DATEDIFF(MINUTE, ct.dateFrom, :date) % 120
但是HQL不支持
DATEDIFF
函数,我已经尝试将它添加到方言中

registerFunction("DATEDIFF_MINUTE", new SQLFunctionTemplate(new CalendarDateType(), "DATEDIFF(minute, ?1,?2)"));
并使用它
MOD(DATEDIFF\u MINUTE(ct.dateFrom,:date),120)
,但我得到了一个异常

No data type for node: org.hibernate.hql.ast.tree.MethodNode 
 +-[METHOD_CALL] MethodNode: '('
 |  +-[METHOD_NAME] IdentNode: 'DATEDIFF_MINUTE' {originalText=DATEDIFF_MINUTE}
 |  \-[EXPR_LIST] SqlNode: 'exprList'
 |     +-[DOT] DotNode: 'Foota0_.Date_From' {propertyName=dateFrom,dereferenceType=ALL,propertyPath=dateFrom,path=ct.dateFrom,tableAlias=Foota0_,className=ru.package.Foo,classAlias=ct}
 |     |  +-[ALIAS_REF] IdentNode: '(Foota0_.Date_Create, Foota0_.User_Create)' {alias=ct, className=ru.package.Foo, tableAlias=Foota0_}
 |     |  \-[IDENT] IdentNode: 'dateFrom' {originalText=dateFrom}
 |     \-[NAMED_PARAM] ParameterNode: '?' {name=date, expectedType=null}

我怎样才能解决这个问题?

问题解决了。似乎Hibernate不接受camelCaseCAPSED_TEXT。将函数重命名为
datediff\u min
已工作。

问题已解决。似乎Hibernate不接受camelCaseCAPSED_TEXT。将函数重命名为
datediff\u min
已工作