Разбор HQL в структуру AST и преобразование AST обратно в HQL - PullRequest
5 голосов
/ 22 апреля 2010

У меня HQL-запрос:

query = select item.itemNumber from items item where item.stock>0 and item.price<100.00

Мне нравится анализировать этот запрос и преобразовывать его в древовидную структуру:

AST queryTree = parse(query);

чем мне нравится перебирать узлы, изменять некоторые значения и преобразовывать дерево обратно в строковое представление:

Iterator<ASTNode> it = queryTree.nodeIterator();
while(it.hasNext())
{
  ASTNode node = it.next();
  System.out.println( node.text() + "->" + node.value() );
}
query = queryTree.toString();

было бы неплохо, если бы метод синтаксического анализа выдавал Исключения в случае нарушения грамматики HQL, но это не обязательно. Кто-нибудь знает, как это можно сделать? Есть ли какие-либо методы API, предлагаемые hibernate для решения этой задачи?

Спасибо

1 Ответ

0 голосов
/ 12 марта 2017

Вы можете взглянуть на новый экспериментальный парсер, который работает здесь: https://github.com/hibernate/hibernate-hql-parser

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