Я определил несколько именованных запросов JPA следующим образом:
SELECT group FROM FOO_Group group WHERE group.valid = :valid ORDER BY group.date
Несмотря на то, что group
является зарезервированным ключевым словом в SQL, это никогда не беспокоило Hibernate.
Теперь, однако мне пришлось определить именованный запрос, объединяющий две таблицы:
SELECT group FROM FOO_User user JOIN user.group group WHERE group.valid = :valid ORDER BY group.date
На этот раз запрос завершается неудачно, и в спящем режиме говорится, что ожидалось BY
(как в GROUP BY
), но WHERE
было найдено.
Я знаю, что использование зарезервированных ключевых слов в качестве имен столбцов, таблиц или сущностей, как правило, является плохой идеей. Но мне интересно, почему это не вызвало никаких проблем в моих старых запросах, но теперь не удается в запросе присоединения. Есть ли синтаксис, который позволяет мне использовать group
в новом запросе? Я попытался JOIN user.group AS group
, но это не сработало, как ожидалось.
Сейчас все, что я могу сделать, это переименовать идентификатор:
SELECT g FROM FOO_User user JOIN user.group g WHERE g.valid = :valid ORDER BY g.date