hibernate有一个表a的配置文件a.hbm.xml,有一个表a对应的bean:A。
现在因为特殊需要,需要同时查询a和b两张表,并且根据a.t like '%b.t%'的条件进行数据查询。因为表关联查询时我需要表a的所有字段和表b的3个字段,那么表b的3个字段的映射是否可以写入表a的配置文件中。因为我现在这么写了但是有时报错,有时就不报错。请问这种情况应该怎么做?

解决方案 »

  1.   

    为什么需要表b的3个字段的映射是否可以写入表a的配置文件呢
    分别配置两个表的实体配置文件好了啊
    然后select a.all,b.3个字段 from a,b where a.t like '%b.t%'
      

  2.   

    你这是标准SQL 楼主是不是想用HQL?
    联合查询用HQL确实很麻烦 还是用SQL吧
      

  3.   

    在a配置文件中a表在b表中的外键所对应的字段用b对象表示。这样就可以用hql语句
    a.b.t了
      

  4.   

    '%b.t%'    ?????有这样写的吗?
    "%" + b.t + "%"
      

  5.   

    多表的联合查询,建议还是用ibates好了,轻量级,比较方便
      

  6.   


    我现在讨论的不是SQL的语法问题,你说的是在Java里的写法,但是我在PL/SQL里用单引号加百分号的写法有问题么?你的回答对我提出的问题还是一点帮助都没有,谢谢。
      

  7.   


    谢谢你的回答,但是使用ibatis,或者用hibernate不是我能决定的呀,因为对于hibernate来说我是初学者,而且项目里又要求用hibernate,所以有些问题我不是很清楚,来论坛问下高手。
      

  8.   

    首先请问楼主 A表 B表 有关系没? 如果有A和B是一对一关系  则可以写 from A as a join a.B 
    其余的关系就是依葫芦画瓢
      

  9.   


    配置两个表的实体文件,你的意思是说两个表,两个配置文件,两个实体bean,是这个意思么?但有个问题我不是很清楚,想请教一下:表B里并不存在表A的外键。而是表A的一个字段是表B的一个字段的一部分,比如说,表A的t字段是‘AAAA’,表B中的字段是'AAAA-BBBB-CCCC',如果是这样,如何去配置两个实体B,谢谢。
      

  10.   

    直接用sql语句不可以吗,
    先写一个存放数据的类Result;
    List<Result> results=new ArrayList<Result>;
    String sql="from A a, B b where a.t like '%b.t%'";
    Query query = session.createQuery(sql); 
    List list= (ArrayList)query.list(); 
    Iterator iterator = list.iterator(); 
    while (iterator.hasNext()) { 
    Result result=new Result();
    Object[] o = (Object[]) iterator.next(); 
    A a= (A) o[0]; 
    B b= (B) o[1]; 
    result.setXX(a.getXX());
    result.setXX(b.getXX());
    results.add(result);
    }