2013-12-18 4 views
1

Я выполняю запрос в HQL, для которого я получаю следующую ошибку. Я использую DB2 в качестве базы данных,ошибка org.hibernate.queryexception при выполнении запроса HQL

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

The (первая) ошибка на самом деле в сообщение ...

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

Ожидается IN IN.

Я действительно не понимаю ваше соединение. Ваш JOIN во втором подзапросе, это должно быть где IN?

Смежные вопросы