Java EE не компилирует запрос с оператором IN - PullRequest
0 голосов
/ 25 января 2012

Я написал запрос, который хорошо работает, если используется в MySql Workbench, но он не скомпилируется, если используется в моем проекте Java EE!

Вот запрос:

@NamedQuery(name = "Book.findByCourse", query = "SELECT b FROM Book b WHERE b.teaching IN (SELECT T.id FROM Teaching T, Course C WHERE T.course = C.id AND C.id = :course)")

Запрос работает нормально, но у меня есть эта ошибка в моем проекте Java EE:

Ошибка компиляции запроса [...], строка 0, столбец 0: неверный аргумент выражения IN [SubqueryNode Слева: ноль Справа: null], ожидаемый аргумент типа [entity.Teaching].

Что с ним не так?

1 Ответ

0 голосов
/ 25 января 2012

Прежде всего вы пытаетесь выбрать идентификаторы только в своем подзапросе, а затем сравнить его с полным объектом pojo (не уверен, если это вообще возможно)

По моему мнению, вы должны либо получить собственный запрос (@NamedNativeQuery), чтобы достичь желаемого, либо использовать Criteria Builder, например, здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...