简短的回答是“你不能”。长答案在下面。
您可以采用两种方法:
A)研究
HQLQueryPlan类,特别是它的
getSqlStrings()方法。它不会为您提供
确切的 SQL,因为在实际执行查询之前会进行进一步的预处理(绑定参数,应用限制/偏移量等),但它可能与您想要的足够接近。
这里要记住的事情是,您需要一个实际的
SessionFactory实例来进行构造
HQLQueryPlan,这意味着如果不“连接到任何数据库”就无法做到这一点。但是,您可以使用内存数据库(SqlLite等),并让Hibernate自动为其创建必要的架构。
B)开始
ASTQueryTranslatorFactory并陷入AST
/ ANTLR疯狂。从理论上讲,您可能可以破解一个无需依赖元数据就可以工作的解析器,但是我很难想象要为此付出的努力。也许您可以澄清一下?有 有
是一个更好的办法。



