最近项目中遇到了关联表,用到了hibernate去封装,主要的是用hibernate
  查询的比较多,不想用sql语句,想用hql语句,要用sql语句的话,就要写一大堆....
  所以现在征求大家的意见如何去写这样的 hql 语句。
   
  还有hibernate查询返回list后,怎么样根据这个list去得到关联表的记录呢???  

解决方案 »

  1.   

    1. HQL语句可以用JOIN 也可以通过构造器的方式查询你想查询的东西(可看Hibernate3.2帮助文档的14.3 14.4 14.5 章节)
    2. 迭代出来
      

  2.   

    用hibernate criterion 吧,更理想,更OO的封装
      

  3.   

     
      我想问一下像这样的sql 查询语句,如何用hql优化?
      select c.name,c.code,s.name,s.tag,sc.bigsuit,sc.ss 
      from commitly c,suppliery s ,supplier_commitly sc where 
      and sc.supplierId = s.id and sc.commitlyId = c.id and 
      c.code = 'xx' or c.name = 'xx'   其中:supplier_commitly表 对应的是SupplierCommitly类,
            suppliery  表 对应的是Suppliery 类,
            commitly  表 对应的是Commitly 类。
        
      SupplierCommitly 类与 Suppliery类, Commitly 类,均是<many-to-one>的关系。
       请问如何用 hql 语句优化??
      
      

  4.   


      sql 语句多了个and
      
     纠正:
     select c.name,c.code,s.name,s.tag,sc.bigsuit,sc.ss 
      from commitly c,suppliery s ,supplier_commitly sc where 
      and sc.supplierId = s.id and sc.commitlyId = c.id and 
      c.code = 'xx' or c.name = 'xx' 
     把and 去掉。。
     
      

  5.   

    但不知道 HQL 是否有  case when 语句呢?
    是动态查询
      

  6.   

    你在映射之后的XXXX.hbm.xml中添加一对多或者一对一那样的约束
    并且处理相关的映射好的类
    自然就可以关联查询了
      

  7.   


    这个我知道啊,但我想查询我想要的字段,hibernate返回的是list啊。
    hql语句该怎么优化呢??
      

  8.   

    你还是没用过关联的
    你关联好了之后
    可以在Student类里添加一个Teacher类(比如说一对多的关系)
    Teacher类里肯定有相关的字段,比如姓名你不要想着字段
    既然Hibernate能给你形成类让你使用
    你就使用类不就好了嘛
    你要是再说字段的问题
    我就不再跟你说这种技术的问题了你要转变思想
    学习使用类的方式来解决问题最多的情况下
    多添加几个类就好了