У меня 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 для решения этой задачи?
Спасибо