2013-12-18 73 views
1

我在HQL中執行查詢時出現以下錯誤。我使用DB2數據庫,執行HQL查詢時org.hibernate.queryexception錯誤

Error: Caused by: org.hibernate.queryexception: in expected [hql query] 

和查詢,

final String qStr = "select distinct a.* from (select attr.* from AttributeModel attr, BOModel bo, BusinessIdentifierModel ident, NameTransferModel name, NameTransferModel name2 WHERE" + 
            "bo.businessIdentifierId = ident.businessIdentifierId AND" + 
            "ident.businessIdentifier = :businessIdentifier AND" + 
            "attr.compAttributeModelKey.boRowNo = bo.compBOModelKey.boRowNo AND" + 
            "attr.compAttributeModelKey.eventId = bo.compBOModelKey.eventId AND" + 
            "bo.typeId = name.nameTransferId AND" + 
            "name.originalName = :className AND" + 
            "bo.nameId = name2.nameTransferId AND" + 
            "name2.originalName = :fieldName) a JOIN (SELECT event.eventId, attr2.nameTransferId, attr2.compAttributeModelKey.boRowNo, RANK() OVER (PARTITION BY bo2.businessIdentifierId, attr2.nameTransferId, attr2.compAttributeModelKey.boRowNo ORDER BY event.eventId desc) rank from EventModel event, BOModel bo2, AttributeModel attr2,BusinessIdentifierModel ident WHERE" + 
                     "event.changeTime <= :time AND" + 
                     "bo2.businessIdentifierId = ident.businessIdentifierId AND"+ 
                     "bo2.compBOModelKey.eventId = event.eventId AND" + 
                     "attr2.compAttributeModelKey.eventId = event.eventId AND" + 
                     "attr2.compAttributeModelKey.boRowNo = bo2.compBOModelKey.boRowNo AND" + 
                     "ident.businessIdentifier = :businessIdentifier) b ON (" + 
                     "a.eventId = b.eventId AND" + 
                     "a.nameTransferId = b.nameTransferId AND" + 
                     "a.boRowNo = b.boRowNo AND" + 
                     "RANK = '1')"; 

請有一目瞭然,並建議我,如果任何錯誤的語法

+0

...我猜這是抱怨你在WHERE和AND關鍵字後沒有空格的事實?無論如何,你不應該有更多來自異常的消息嗎?是否有更多的堆棧跟蹤? –

+0

感謝Clockwork-Muse,我試過給空間。但我仍然得到同樣的例外。請告訴我有沒有錯誤的語法? – Sandy

+0

然後請更新這裏的例子來反映這一點。一個真正快速的一瞥並沒有顯示任何明顯的錯誤,但我希望剩下的堆棧跟蹤能夠更好地解釋引擎。它有更多的信息。 –

回答

0

(第一)錯誤實際上是該消息...

Error: Caused by: org.hibernate.queryexception: **in** expected [hql query] 

IN是預期的。

我真的不明白你的加入。 您在第二次子選擇中的JOIN是否應該是IN的位置?