2015-04-02 5 views
0

я выполнить запрос ниже непосредственно в базе данных Mysql, и она работает, как ожидалось:SQL - Hibernate неожиданный маркер

select lu.* from LocationUpdate lu inner join (select imsi,MAX(date) as maxdate from LocationUpdate group by imsi) grouplu on lu.imsi = grouplu.imsi and lu.date = grouplu.maxdate 

В HQL я просто изменил lu.* на lu, но я получаю эту ошибку:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: (near line 1, column 114 [select lu from com.truphone.simmanager.simcard.service.impl.entities.locationupdate.LocationUpdate lu inner join (select imsi,MAX(date) as maxdate from com.truphone.simmanager.simcard.service.impl.entities.locationupdate.LocationUpdate group by imsi) grouplu on lu.imsi = grouplu.imsi and lu.date = grouplu.maxdate] 

Кто-нибудь знает, что мне не хватает?

+0

Я думаю, что lu необходимо заменить на LocationUpdate, поскольку HQL будет рассматривать как enity для него. Просто замените' select lu from' на 'select LocationUpdate from' и повторите попытку –

+0

Это не решение. Это можно сделать, но Hibernate может преобразовать LocationUpdate в lu. У меня это в других сценариях. Спасибо за попытку помочь. – bsferreira

ответ

0

Попробуйте без оператора выбора

«от LocationUpdate лу внутреннего соединения (выберите IMSI, MAX (дата) в MaxDate из группы LocationUpdate по IMSI) grouplu на lu.imsi = grouplu.imsi и lu.date = grouplu .maxdate "

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