我使用MyEclipse添加了实体类的映射,并且表的外键关系都存在,但是在使用HQL查询语句的时候执行联表查询得到的结果是一个object类型的不能转换成一个单一实体类。
比如有三张表,Board表、User表、Topic表
Topic表里面有与Board表和User表的外键关系,但是在HQL里面查询Topic类的时候不能得到其他两个类的信息,如果全部查询的话,获取的结果又不能转换成Topic。
请教各位老鸟!这个问题怎么解救而?

解决方案 »

  1.   

    查询Topic类的时候可以直接查找相关联的类信息,可以通过Topic类的get方法获得相关类的信息
      

  2.   


    Topic.class
    Board board; 
    setter/getter Board
    User user;
    setter/getter User;
    你在使用hql的语句的时候,查询的是Topic对象。
    然后将Object转换成Topic,通过Topic对象的get方法就可以得到Board和User这两个对象。
    同理:一对多、多对对。都可以这样做;
      

  3.   

    如果全部查询,得到的是个Object[]
    想得到Topic类,就用Object[2]
      

  4.   

    我的问题就是这个!如果我查询的只是topic类的话,用get方法不能得到user类和board类,如果全部查询出来的话,不能将结果转换成topic类型,我现在的问题就是,联表查询的结果用一个类表现出来!
      

  5.   

    楼主你确定你的配置文件没有问题?
    我认为还是配置的问题,没有映射成功many to one
      

  6.   

    如果实体之间有关系的 可以用JOIN查出 联表查出来的那是怪物
      

  7.   

    等等 我他吗理解错了..这样 先用createSQLQuery查询 然后字段排好 你看看用addEntity能行不
      

  8.   

    问题解决!看了网上一些使用Criteria查询的例子得到了解决方法!放弃使用HQL了!
    如果使用Criteria查询,只需要用到方法createAlias(arg0, arg1),第一个参数填实体类A在实体类B中的字段名,第二个参数填实体类B的完整路径!