我们现在做一个项目,以快完工了,语句都是使用HQL的,但现在需要把所执行的HQL语句转化成SQL语句存放到数据库中,当项目运行一个方法,都会把相应SQL取出来,存入库,以便后期在数据库中执行相应操作,这应该怎么去实现

解决方案 »

  1.   

    我曾想过使用P6SPY,他会把所有的SQL写入日志,但确很难把相对应的查询提取出来
      

  2.   

    找Hibernate的log配置资料,我记得hibernate的默认log输出中是有sql语句的。
      

  3.   

    在hibernate.cfg.xml中将show_sql设置为true,
    这样hibernate会将sql语句显示出来,
      

  4.   

    这只能在控制台显示出来,而且是?的形式,我要带参数的,并且要获得这个SQL语句
      

  5.   

    show_sql出来的是?类型的!
    最彻底的做法就下载hibernate的源码,修改相应的代码,将VO的值取出,拼出SQL语句放入数据库。
    这样的SQL是可执行的!
      

  6.   

    hibernate配置文件中 show_sql设置为true同步打印SQL
      

  7.   

    show_sql设置这个方法行不通,一是我要获得这个SQL,把这个SQL语句存入库,二是显示出来的是?的形式,我要带参的
      

  8.   

    你要带参数的这个行不通,jdbc 的perpareStatement 就是预编译的,如果能获取的话,你只能获取带问号的sql语句和参数列表
      

  9.   

    使用P6SPY +SQL Profiler
      

  10.   

    这个方法我试过了,但显示出来的结果是在SQL Profiler的窗体中,后台得不到,我是要得到这个SQL语句存入库,所以这个方法很不理想
      

  11.   

    他们都是开放源代码的,既然他们能取到sql,只不过显示的不一样而已
    你改一改源码存到数据库里不就行了
      

  12.   

    在hibernate.cfg.xml中将show_sql设置为true, 
    这样hibernate会将sql语句显示出来
      

  13.   

    不要存入数据库了,数据库大了查询很麻烦的。
    在hibernate.cfg.xml中将show_sql设置为true, 
    这样hibernate会将sql语句显示出来,再设置一下log4j把hibernate生成的sql写入日志文件
      

  14.   

    P6SPY其实就可以了!~
    在hibernate.cfg.xml中将show_sql设置为true,
    这个也可以啊1~只是没有参数!~但是这个是嘴标准的sql语句!~
      

  15.   

    hibernate打印出来的sql语句都是赋上参数的
    如果需要使用sql语句
    应该只能一句句的改吧 
    改好象也不是很麻烦
      

  16.   

    看Hibernate的源代码,有几个类是解析HQL语句的。
      

  17.   

    跟项目平台有关:Hibernate内部有拦截器机制。跟配置有关,在添加配置的时候就添加了相应的拦截器。
    如下拦截器需要重新实现。
    public interface Interceptor {
    /**
     * Called when sql string is being prepared. 
     * @param sql sql to be prepared
     * @return original or modified sql
     */
    public String onPrepareStatement(String sql);
    }
    将Hibernate内部拦截器内部实现置换掉。比较麻烦,没那么容易成功。
      

  18.   

    不要存入数据库了,数据库大了查询很麻烦的。 
    在hibernate.cfg.xml中将show_sql设置为true, 
    这样hibernate会将sql语句显示出来,再设置一下log4j把hibernate生成的sql写入日志文件 你試試這樣看行不