Краткий ответ: я считаю, что это НЕ возможно.
Мои рассуждения:
Согласно Где я могу найти список всех ключевых слов HQL? Проект Hibernate не публикует грамматику HQL на своем веб-сайте, однако он доступен в полном дистрибутиве Hibernate как файл .g
ANTLR.
У меня нет большого опыта работы с .g
файлами из ANTLR, но вы можете найти это в файле (hibernate-distribution-3.6.1.Final/project/core/src/main/antlr/hql.g
):
selectFrom!
: (s:selectClause)? (f:fromClause)? {
// If there was no FROM clause and this is a filter query, create a from clause. Otherwise, throw
// an exception because non-filter queries must have a FROM clause.
if (#f == null) {
if (filter) {
#f = #([FROM,"{filter-implied FROM}"]);
}
else
throw new SemanticException("FROM expected (non-filter queries must contain a FROM clause)");
}
, в котором четко указано, что некоторые HQL-запросы не имеют предложения FROM
, но это приемлемо, если это запрос фильтра. Опять же, я не эксперт по HQL / Hibernate, но я считаю, что запрос фильтра - это не полный запрос, а то, что вы определяете с помощью session.createFilter
(см. Как превратить упорядочивание элементов HQL в запрос фильтра? ), поэтому я думаю, что нет способа опустить предложение FROM
.