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

标签 java hibernate parsing hql

我有一个 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();

如果 parse 方法在违反 HQL 语法的情况下抛出异常就好了,但这不是必需的。 有谁知道如何做到这一点? hibernate 是否提供任何 API 方法来完成该任务?

谢谢,

最佳答案

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

关于java - 将 HQL 解析为 AST 结构并将 AST 转换回 HQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691815/

相关文章:

java - notifyAll() 方法在我的代码中不起作用

java - OptaPlanner 车辆路线和客户拜访之间的关系

java - Java 中 C 的标准库 rand() 函数

java - Hibernate session.contains(类 clazz,序列化 id)

hibernate - Elasticsearch 的性能是否会受到关系数据库模型(如MySQL)的影响?

java - NamedParameterJdbcDaoSupport 带有搜索表单 OR 条件实现

java - 忽略错误 org.jsoup.HttpStatusException... 并打印自定义消息?

java - 我怎么会误解这些 Java 函数的 Big-O?

c# - 从 C# 中的货币转换器 API 获取汇率

Python:Google-Maps-API 发送未知格式进行解析