yangbintao
2009-08-24 21:07
浏览 560
已采纳

Hibernate在那个方法里将HQL转成普通SQL语句并执行的?

Hibernate在那个方法里将HQL转成普通SQL语句并执行的?
[b]问题补充:[/b]
小弟不才,根据各位的提示还是没能找到具体的转换方法在那里。
[b]问题补充:[/b]
昨天就是在研究这个类,我的修改如下。重编译后替换原来的class文件,运行程序看不到我加上去的打印。
private void generate(AST sqlAst) throws QueryException, RecognitionException
{
System.out.println("************generate begin");
if (this.sql == null)
{
SqlGenerator gen = new SqlGenerator(this.factory);
gen.statement(sqlAst);
System.out.println("--generate1");
System.out.println(gen.getSQL());
System.out.println("--generate2");
this.sql = gen.getSQL();
if (log.isDebugEnabled())
{
log.debug("HQL: " + this.hql);
log.debug("SQL: " + this.sql);
}
gen.getParseErrorHandler().throwQueryException();
}
}
[b]问题补充:[/b]
我写了个根据角色进行数据过滤的方法不能直接用的HQL上只能对原始的SQL语句加工,所以想得到Hibernate转换后的语句且在它进行查询之前将此语句加工,然后再让其执行
[b]问题补充:[/b]
我是新建一个项目在里面按hibernate里的结构建包名,然后把反编译后的类文件放到包下进行编译的。见附件图
[b]问题补充:[/b]
因为我的程序已经写好了,现要加入数据过滤的功能。只能这样改了。
想的太简单了是指hibernate并不是象我想的那样会输出个原始语句然后再执行吗?

6条回答 默认 最新

相关推荐 更多相似问题