有个HQL:from A left join fetch B where ...
现在需要根据B的条件来过滤结果集 发现过滤条件并不起作用
数据库是sybase 
被hibernate翻译的sql是
select ... from A,B where A.id*=B.id and B.xx=11
sybase的这个sql对应的标准sql是
select ... from A left join B on A.id=B.id and B.xx=11
而不是
select ... from A left join B on A.id=B.id where B.xx=11
但是我要的效果是where B.xx=11请问如何去改HQL
哥不会hibernate :)

解决方案 »

  1.   

    直接用JDBC语句
    Connection conn = session.connection();
    PreparedStatement pst = null;
    ResultSet rs=null;
    pst = conn.prepareStatement("select * from A,B where A.id*=B.id and B.xx=11");
    rs = ps.executeQuery();
    while(rs.next())
    {
    ...
    }
      

  2.   

    from A left join B where A.id=B.id and B.xx=11
      

  3.   

    都让hibernate去死,那就让它去死吧,还问hql做什么?!
      

  4.   

    方言改过了吗?实在不行用NativeSql吧
    SQLQuery q = session.createSQLQuery("select ... from A left join B on A.id=B.id and B.xx=11
    ").addEntity(A.class);