struts和hibernate用到的代码://struts
String HQL = 
  "SELECT s.corp_Name,s.corp_Id,sc2.corp_Name FROM Sys_Corporation s LEFT JOIN Sys_Corporation sc2 " +
"ON s.super_Corp=sc2.corp_Id";

List list = dao.findBySql(HQL);
//hibernate
public List<?> findBySql(String sql) {
List<?> list = null;
try{
session = this.getSession();
list = session.createSQLQuery(sql).list();
}catch(Exception e){
log.error("CommonDAO.findBySql Exception");
}finally{
this.sessionTransactionGc();
}
return list;
}
谁能告诉我怎么回事么????????????

解决方案 »

  1.   

    up。难道hibernate不支持自关联么。。
      

  2.   

    话说为什么要用这样的sql语句  看你的条件只是一个简单的从属关系
      

  3.   

    createSQLQuery 方法执行的查询,是将查询结果以对象数组的方式存储。如果你想取出对应的字段,就要遍历这个数组。
      

  4.   

    如果你想让相关的字段合成对象,建议你建立一个bean,将这些字段组合成这个bean的对象,那么在查询的时候可以通过createSQLQuery(sql).addEntity(XXX.Class).list();来获取这个bean的list集合对象。
      

  5.   

    Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);
    Hibernate 的 createSQLQuery()方法会把查询的数据映射为对象,你在后面加上实体类的类名就可以了
      

  6.   


    程序里取到的值是在debug模式下的。数据库最开始取到的值就有问题后面怎么弄都是错的吧。
      

  7.   

    程序里取到的值是在debug模式下的然后我截的图。数据库最开始取到的值就有问题后面怎么弄都是错的吧。 
      

  8.   

    如果你实在不知道怎么做,你可以先简单查询后,在递归。如果你想还是按照你那思路写的话查询返回的结果是List<Object[]> 形式的,你可以循环的将其构造成对象。 
      

  9.   


    我的问题是嵌入式sql语句和在pl-sql developer同样的sql语句查到的东西不一样。不是如何构造的问题。java嵌入式sql查到的东西有错误
      

  10.   


    SELECT s.corp_Name,s.corp_Id,sc2.corp_Name FROM Sys_Corporation s , Sys_Corporation sc2  
    where s.super_Corp=sc2.corp_Id
    一个简单的条件查询而已。没必要用连接查询。
      

  11.   

    纯sql语句和配置文件没什么联系吧。这个sql都绕过hibernate映射文件了。
      

  12.   

    上面给你回的sql不就是吗?
    看不懂啊?那我再写一次吧,哎。如下:select fugongsi.corp_name, ziji.corp_name from Sys_Corporation ziji ,Sys_Corporation fugongsi where ziji.super_corp = fugongsi.corp_id ;
      

  13.   

    没注意你的sql语句,还以为是抄我的大哥你是来玩我的吧,这2句话意思不一样好不。能直接连接我还用个毛左连接啊。左连接条件不成立也有数据,也就是不是每个公司都有父公司的你这样就只能查到主键为2的那条记录了。
      

  14.   

    他们就不是一个体系,当然有差别。如果你觉得SQL准确,那你就自己写个视图,用Hibernate映射这个视图,hql直接写"from 视图实体"完事
      

  15.   

    体系是什么意思?数据库是老大写的我不能改啊。。而且和视图有什么联系同样的表同样的sql语句。只是一个是工具里直接写的一个是嵌入在java程序里面的,都是纯sql语句和hibernate应该也没什么关系了。结果会不一样?
      

  16.   


    list = session.createSQLQuery(sql).list();
    只要你这么写,它就不是纯SQL。
    ResultSet = st.executeQuery(sql);
    这个才叫纯SQL,懂?
      

  17.   

    ....hibernate只是对java jdbc做了些封装并且加了些功能吧?难道他还自己写一套和数据库通信的方法?自己建一个SQLCA然后自己生成游标和主变量什么的解释这种嵌入式sql???
      

  18.   

    它只是写了一套机制把HQL和hibernate动作解析成SQL,所以,你写的HQL真正执行的是什么,以它生成的为准,你可以设置showsql属性把它打印出来,如果它打印出来的SQL和你在PL/SQL里执行的一样,那结果就不会有差别
      

  19.   

    又绕回来了
    我写的是sql,不是hql。。
    我的问题就是一模一样的sql,程序里面的和pl-sql developer里面的结果不一样。