那写什么?HQL
select * from B left outer join fetch A where  A.id = B.id

解决方案 »

  1.   

    select * from B left outer join fetch A on  A.id = B.id where .....
    习惯性
      

  2.   

    使用Criteria 对象实现应该怎样写
      

  3.   

    不会。
    hibernate并不推荐用Criteria ,它推荐使用HQL
    Criteria 功能远没有HQL完善
      

  4.   

    你给的sql语句放到hibernte中不行啊
      

  5.   

    怎么不行?贴dao方法的代码,和异常信息
      

  6.   

    String sql = "from HealthDoc as hd left join  FnbDoc as fd where hd.healthDocId=fd.hleathDocNo";
    Query query = session.createQuery(sql);
      

  7.   

    left outer join fetch
    fetch可以不加
      

  8.   

    Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [from jkdagl.vo.HealthDoc as hd left outer join  FnbDoc as fd where hd.healthDocId=fd.hleathDocNo]
    at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:225)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
    at bjfwgl.dao.FnbDocDao.queryFnbInfo(FnbDocDao.java:40)
    at bjfwgl.dao.FnbDocDao.main(FnbDocDao.java:44)
    Caused by:  Path expected for join!
    at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:307)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3268)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3060)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218)
    ... 10 more
      

  9.   

    对了忘记说了我在hbm.xml文件中并没有配置表之间的关系只是想通过hql来实现
      

  10.   

    那就不可以用HQL进行连接查询,HQL是针对你的对象来查询,不是直接针对数据库。
    不进行正确配置的话,只能用createSQLQuery();  用原生的SQL来做
      

  11.   

    如果是关联的可以select * from B left outer join fetch B.A where ..... 
      

  12.   

    怎么了?直接用SQL也不行???
      

  13.   

    大哥我数据库中的记录是几万条!  我写了如下的代码:
    String sql = "select * from health_doc hd left join fnb_doc fd on hd.health_doc_id=fd.hleath_doc_no";
    Query query = session.createSQLQuery(sql);报了如下的错误:
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
      

  14.   

    查询完,session没关闭,事务没有管理到