2017-02-15 23 views
0

Im получая org.hibernate.hql.internal.ast.QuerySyntaxException в моем запросеПолучение ошибки синтаксиса запросов при попытке использовать внутреннее соединение

Query query = session.createQuery("update Room as r " 
      + "inner join Booking as b " 
      + "on r.roomId = b.room.roomId " 
      + "set r.roomAvailable = true " 
      + "where b.checkOutDate < NOW()"); 

полную ошибку:

org.springframework.web. util.NestedServletException: обработка запроса не выполнена; Вложенное исключение - это java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: ожидающий «набор», найденный «внутренний» рядом с линией 1, столбец 55 [обновление com.websystique.springsecurity.model.Room as r internal присоединиться к com.websystique.springsecurity.model.Booking, как б на r.roomId = b.room.roomId установить r.roomAvailable = истина где b.checkOutDate < NOW()]

запрос работает отлично в MySQL Workbench. .. так ли это возможно в любом случае здесь в коде или нет?

Любая помощь очень ценится.

+2

* запрос отлично работает в workbench mysql *: mysql workbench выполняет SQL-запросы. session.createQuery ожидает запрос HQL. Это два разных языка. –

+2

вам нужно использовать createSqlQuery insted createQuery – mvlaicevich

+0

@mvlaicevich Спасибо, друг! – john

ответ

1

Вы должны использовать запрос с подзапросом вместо соединения. Перепишите свой запрос, и он будет работать.