0
我正在使用Hibernate3,試圖執行以下HQL查詢,它會給出以下錯誤。Agregate函數MAX和AVG在Hibernate中不能與DATEDIFF一起使用HQL
查詢: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函數等,仍然不工作... 這是迫切的要求,請任何一個回答這個或重新指引我到一個鏈接,我可以得到這個解決方案。
你用什麼數據庫?哪個版本? – 2012-02-29 09:39:41
您可能會發現一些有用的東西在https://forum.hibernate.org/viewtopic.php?p=2436442 – 2012-02-29 09:41:07
我正在使用MS SQL Server 2008 – Nagesh 2012-03-01 14:14:27