Session session =HibernateSessionFactory.getSession();
String sql="select  c.name  from  Cut  as  c left  join  King  as  k  on  k.age=c.age";
Query q=session.createQuery(sql);
List list =q.list();select  c.name  from  Cut  as  c left  join  King  as  k  on  k.age=c.age 这句 我在查询分析器里面查询没问题  但是上面的语句在eclipse中就报错 那是什么问题啊上面2个表没有联系 
报下面的错误
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 78 [select  c.name  from  com.founder.model.Cut  as   c left  join  King  as  k  on  k.age=c.age]

解决方案 »

  1.   

    错误里面Cut有包路径com.founder.model.Cut,而King却没包路径,是不是King不存在,或者配置有问题。
    另外,如果只要查询Cut里面的数据,就不用去写什么left join,下面的写法就可以了:
    "select  c.name  from  Cut  as  c, King  as  k  where  k.age=c.age"
    如果上面的sql也运行报错,那肯定是King类的问题了
      

  2.   

    我用 Session CreateSQLQuery 没报错  那是什么问题呢  为什么CreateQuery会报错呢?
    难道  "select  c.name  from  Cut  as  c, King  as  k  where  k.age=c.age"是SQL语句么?
      

  3.   

    CreateSQLQuery  跟 CreateQuery有什么区别啊?
      

  4.   


    CreateSQLQuery是执行标准的sql语句
      

  5.   

    CreateSQLQuery:执行标准语句(sql)查询,返回List<Object[]>
    CreateQuery:根据hibernate生成bean面向对象的方式(hql)来查询,返回List<HibernateBean>com.founder.model.Cut ==> 有hibernate bean
    King ==》 没有hibernate bean
    LZ用的是hql,所以会报错!以上个人猜测,希望能帮到LZ。
      

  6.   

    表与表没有关联?怎么一起查,SQL语句没有问题...
      

  7.   

    建议:
    1、持久类写错了,要不就是写成了数据库表名
    2、hibernate3.0不支持select中嵌套查询,据说from中也不行,只支持where中嵌套查询,好像3.1支持了select中嵌套
    3、sql语句中字段是用了保留关键字
      

  8.   

    如果用左、右连接的话,最好使用createSQLQuery方法,如果用CreateQuery,你必须在hbm.xml配置一对多或多对多关联,否则不能用
      

  9.   

    createSQLQuery 和 CreateQuery的结果集返回数据不一样吧?
      

  10.   

    hibernate使用左、右、外、内连接是建立在*.hbm.xml文件中做了关联(on to many, many to one , many to many)之后的基础上的
      

  11.   

    你写了 Set 集合没有,如果没有的话,怎么认识呢?
    HQL 面向的是对象,配置文件里要配Set集合才可以连接
      

  12.   

    晕,你建没建关系呀!如果建了直接from就行了!没建就用createSqlQuery
      

  13.   

    createSqlQuery()使用原生的SQL语句,就是你查询分析器里面写的
      

  14.   

    你用createQuery就需要把sql语句转化为hql语句~~~这2个写的方法是不一样的~~~