简体   繁体   English

Hibernate HQL查询抛出异常

[英]Hibernate HQL Query throwing Exception

Please help me tosolve my problem- If I am running the same query in sqlplus, it is working fine. 请帮助我解决问题-如果我在sqlplus中运行相同的查询,则工作正常。

net.sf.hibernate.QueryException: , expected in SELECT [SELECT SUM(CASE WHEN s.SettlementCurrencyName = r.ContractCurrency THEN p.ContractNet WHEN s.SettlementCurrencyName = r.LocalCurrency THEN p.ContractNet/ta.LiquidationRate WHEN s.SettlementCurrencyName IS NULL THEN p.ContractNet/ta.LiquidationRate ELSE p.ContractNet/ta.LiquidationRate END)"PAID AMOUNT", COUNT(t.TX_IDENTIFIER) "PAID TXS" FROM com.uniteller.txcore.Payment p, com.uniteller.txcore.Transaction t, com.uniteller.txcore.TxAccounting ta, com.uniteller.txcore.Remittance r, com.uniteller.txcore.SellingAgentSettlement s WHERE t.isLRCTx = 1 AND t.SellingCompany = :lrcCode AND s.SettlementCurrencyName(+) = r.ContractCurrency AND s.Id.DestCurrencyName(+) = r.ContractCurrency AND s.Id.Code(+) = r.SellingAgent AND r.ContractCurrency = :contractCurrency AND p.PaidAccountDt > :lastPaidAcDt AND p.TxIdentifier = t.TxIdentifier AND p.TxIdentifier = r.TxIdentifier AND p.TxIdentifier = ta.TxIdentifier]
at net.sf.hibernate.hql.SelectParser.token(SelectParser.java:169)
at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87)
at net.sf.hibernate.hql.ClauseParser.end(ClauseParser.java:114)
at net.sf.hibernate.hql.PreprocessingParser.end(PreprocessingParser.java:143)
at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:30)
at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149)
at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138)
at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:295)
at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1572)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1543)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:49)
at com.uniteller.tools.databroker.Main.main(Main.java:85)

I think the problem can be in that you try to execute your query as HQL query: 我认为问题可能在于您尝试将查询作为HQL查询执行:

Query query = session.createQuery(...);

But as I see your query is not HQL, thats why you should execute it as native sql query: 但正如我所见,您的查询不是HQL,这就是为什么您应将其作为本机sql查询执行:

SQLQuery query = session.createSQLQuery(...);

)“ PAID AMOUNT”需要在)和“

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM