2010-04-22 72 views
5

我有一個HQL查詢:解析HQL到AST結構和轉換AST回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(); 

這將是很好,如果t他解析方法會在HQL語法被違反的情況下拋出異常,但並不是必需的。 有沒有人知道如何實現這一點?是否有任何通過休眠提供的API方法來完成該任務?

感謝,

回答