我用下面給出的HQL查詢:意想不到的AST節點
select A.id.customerName,
A.id.customerId,
A.id.IZone,
B.id.accountType,
B.id.accountNumber,
B.id.bankBranch,
(DAYS(current_date)-DAYS(B.id.enrolledDate)) -
(select count(distinct C.id.DWkhol) from Holiday C
where C.id.ICo='01' and
C.id.DWkhol between B.id.enrolledDate and current_date)
from Profile A, Account B
where B.id.accountNumber != ' ' and
A.id.customerId= B.id.customerId;
相同的查詢工作在SQL開發人員罰款,我能夠看到的值。 但我收到expections當我通過我的java類調用這個查詢:
[17年3月16日21:02:29:624 EDT] 00000027 SystemOutØ406868 [Web容器:1] ERROR組織。 hibernate.hql.PARSER - :0:0: 意外的AST節點:查詢[3/16/17 21:02:29:626 EDT] 00000027 SystemOut O 406868 [WebContainer:1] DEBUG org.hibernate.hql。 ast.ErrorCounter - :0:0:意外的AST節點: 查詢:0:0:意外的AST節點:在 處查詢org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1312) at org。 hibernate.hql.antlr.HqlSqlBaseWalker.arithmetic EXPR(HqlSqlBaseWalker.java:2749) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2006) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1825) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553) 在 org.hibernate.hql .antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) 在 org.hiber nate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:251) 在 org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183) 在 org.hibernate.hql.ast.QueryTranslatorImpl。編譯(QueryTranslatorImpl.java:13 [3/16/17 21:02:29:626 EDT] 00000027 SystemOut O 406870 [WebContainer:1] ERROR org.hibernate.hql.PARSER - right-hand 二進制的操作數運算符爲null [3/16/17 21:02:29:627 EDT] 00000027 SystemOut O 406870 [WebContainer:1]調試 org.hibernate.hql.ast.ErrorCounter - 二進制 運算符的右側操作數是零二元運算符的空右操作數爲空 在 org.hibernate.hql.ast.tree.BinaryArithmeticOperatorNode.initialize(BinaryArithmeticOperatorNode.java:48) 在 org.hibernate.hql.ast.HqlSqlWalker.prepareArithmeticOperator(HqlSqlWalker.java:1033) 在 org.hibernate.hql。 antlr.HqlSqlBaseWalker.arithmeticExpr(HqlSqlBaseWalker.java:2756) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2006) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker。的java:1825) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553 ) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) 在 org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) 在 org.hibernate作爲。 hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:251) at org.hibernate.hql.ast.QueryTranslatorImpl。doCompile(QueryTranslatorImpl.java:183) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
'DAYS'看起來像一個Sybase函數,我懷疑HQL會支持它。請更新您的問題,並告訴我們您正在使用的數據庫以及此查詢應該執行的操作。 –
Hello Tim Beigeleisn,數據庫是DB2,查詢從配置文件和帳戶表中檢索其帳戶號不爲空的客戶詳細信息,並計算他們持有帳戶的時間。持續時間以天計。 – BrinzN
我不認爲你可以使用'DAYS'。更改您的查詢。 –