如果你的数据库操作大量的需要使用substr和length,证明,你的数据库设计可能不太好!对于复杂的报表或者复杂的处理,正确的做法是,把逻辑封装在数据库层,用view或者procedure调用,得到结果。对于实在需要复杂SQL的,就使用native SQL

解决方案 »

  1.   

    Hibernate的强项是表和对象之间的Mapping,即不是数据库操作,也不是逻辑处理
      

  2.   

    建议在设计上做点工作吧,比如有用到数据库特性的东西,dao部分考虑有不同实现
      

  3.   

    J2EE群:814047 有很多视频资料
    加入的前提是你别太沉默了,别下完资料就跑了 
    欢迎大家加入 
    希望版主别删,我只是希望有一个非常棒的交流环境~
      

  4.   

    J2EE群:814047 有很多视频资料
    加入的前提是你别太沉默了,别下完资料就跑了 
    欢迎大家加入 
    希望版主别删,我只是希望有一个非常棒的交流环境~
      

  5.   

    不知楼主真正试过这两个函数没有
     List list1 = session.createQuery("select substr(l.bankName,1,2) from LoanInfo l where length(l.bankName)>0").list();
    生成的sql是
    select substr(loaninfo0_.BANK_NAME, 1, 2) as col_0_0_ from T_LOAN_INFO loaninfo0_ where length(loaninfo0_.BANK_NAME)>0
    我用的是oracle8.0.5数据库
      

  6.   

    如果过多的使用复杂的sql语句的项目,建议使用Ibatis。很多时候,数据库操作,也就添删改查,hibernate能简化很多操作。这点就不需要说明了。或许在查询方面,因为sql语句可能复杂,所以建议用native sql。
      

  7.   

    >>>如果数据库设计良好就不用特殊函数,那IBM,Oracle 也不用发明这些函数了,直接屏蔽掉算了~
    >>>存在自然有它的道理. 现在是解决问题,讨论这种道理没有意义没错,在java里面,你可以使用if语句,你也可以使用switch语句,但是,我的意思是,如果你的程序大量使用这些东西,呵呵,并不一定有错,但是,大概会有很大的机会使你的程序结构更好!另外,我的的话可能不太严谨,的确,有很多时候,你需要数据库里面native的东西加速你的开发,但是,如果你把这些东西放到逻辑处理里面,我觉得,大概不是很好!
    我的习惯是,在数据库层做数据库擅长的事情,仅仅保留清晰,简单的接口给外部调用者
      

  8.   

    我来说两句,这位小哥试过没有?我的HQL中写order by len(qcode)最终排序成功,说明hibernate完全支持len嘛