如果是比较复杂的sql语句,如何用hibernate实现呢

解决方案 »

  1.   

    String sql="是sql语句,不是hql语句";
    SQLQuery query = session.createSQLQuery(sql);//原生sql语句
      

  2.   

    如果是表与表之间关系复杂,那么hql完全可以通过面向pojo的方式查询。
    如果要使用一些sql函数,那么hql大多有类似函数可供调用。
    如果是更复杂的语句,那么可以选择通过hibernate sessionfactoy实例获得connection实例,以非面向对象的方式操作数据库,拿到了connection基本就可以像jdbc那样为所欲为的使用,当然这是hibernate不推荐的。
      

  3.   

    你不会改hql的话
    直接写一个sql语句 在数据库里面测试好
    用hibernate的原生sql
    hibernateSession.createSQLQuery()
      

  4.   

    写成普通的sql语句 不过表的字段要与属性对应 
     select u。id ,u。name,j。jobName from User u,Job j where  u。id=j。uid
      

  5.   

    怎么过复杂发,要是用sql能解决的问题,90%用hql都可以解决。实在不行就用ibatis嘛,直接写sql执行
      

  6.   

    可以写namedquery。里面甚至可以写原生SQL.但缺点是没有提供分页方法。
    可以采用session.createSQLQuery,还可以考虑结合ibatis的部分功能,或者是自己写一个类似namedQuery的解析器。
      

  7.   

    如果很长的很复杂的,我不建议用hibernate,这个对性能有影响,而且不小!
      

  8.   

    O/P M的目的就是为了用类来操作关系型数据库 所以HQL应该是一个很不错的方法
    怎么用得看具体的情况 关系能复杂到哪去
      

  9.   

    直接jdbc吧。多表联查不是hib的强项。
      

  10.   

    有些时候是不是要考虑下 你当前项目的架构    并不是怎么简单化就怎么去做吧  如果你单纯的写SQL 语句那么肯定怎么简单怎么做了     
      

  11.   

    如果是抓取具体数据的sql,无论多复杂的,hql也能神奇的化繁为简。
    如果是做类似报表的,要group by rollup之类的,hql无能为力,必须使用原生sql。
      

  12.   

    给你个网址,过去看看吧,很全http://www.verycd.com/topics/93279/