将HQL解析为AST结构并将AST转换回HQL

Chr*_*ris 5 java parsing hibernate hql

我有一个HQL查询:

query = select item.itemNumber from items item where item.stock>0 and item.price<100.00
Run Code Online (Sandbox Code Playgroud)

我想解析此查询并将其转换为树结构:

AST queryTree = parse(query);
Run Code Online (Sandbox Code Playgroud)

比我喜欢迭代节点,更改一些值,并将树转换回字符串表示:

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

如果parse方法在违反HQL语法的情况下抛出异常会很好,但不是必需的.有谁知道如何实现这一目标?是否有任何hibernate提供的API方法来完成该任务?

谢谢,

Chr*_*kov 0

您可以查看这里正在开发的新实验解析器: https: //github.com/hibernate/hibernate-hql-parser