Hibernate3を使用して、次のHQLクエリを実行しようとしましたが、以下のエラーが発生しています。Agregate関数MAXとAVGがHibernate HQLのDATEDIFFと連携していません
問合せ:select MAX(DATEDIFF(SECOND, startTime, endTime)) from Service_Master
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode
+-[AGGREGATE] AggregateNode: 'MAX'
| \-[METHOD_CALL] MethodNode: '('
| +-[METHOD_NAME] IdentNode: 'DATEDIFF' {originalText=DATEDIFF}
| \-[EXPR_LIST] SqlNode: 'exprList'
| +-[IDENT] IdentNode: 'SECOND' {originalText=SECOND}
問合せ:select AVG(DATEDIFF(SECOND, startTime, endTime)) from Service_Master
java.lang.NullPointerException
at org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions$AvgFunction.determineJdbcTypeCode(StandardAnsiSqlAggregationFunctions.java:98)
at org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions$AvgFunction.render(StandardAnsiSqlAggregationFunctions.java:92)
at org.hibernate.hql.ast.SqlGenerator.endFunctionTemplate(SqlGenerator.java:214)
私は、この問題を解決するために多くの方法を試してみましたカスタム方言を使用し、コンストラクタでSQLFunctionを使用してDATEDIFFとMAX関数に関数定義を追加しましたSQL CAST関数などを使用していますが、それでもまだ動作していません。 緊急の要件です。いずれかの方がこれに答えるか、私がこの解決策を得るリンクにリダイレクトしてください。
あなたは何を使用していますか?どのバージョン? –
https://forum.hibernate.org/viewtopic.php?p=2436442 –
私はMS SQL Server 2008を使用しています – Nagesh