复杂的sql语句,你就直接用sql语句就行了。。

解决方案 »

  1.   

    可是我们平台的开发都是把HQL写在配置文件中的,写SQL恐怕不行,而且这个可能也不算复杂吧,我看很多教程上都先配置数据表间的关系再写HQL,写出来的并不复杂,但是我的数据表没有在数据库中建立表间联系,所以就想写在没有配置数据表间关系的前提下的HQL语句。
      

  2.   


    String hql = " from A o1, B o2, C o3 where o1.id = o2.id and o2.id = o3.id and o1.name = ? and o3.state = 'Y'";
    List result = getHibernateTemplate().find(hql,传传过来的name变量);
    A,B,C是表对应的类名。
    name,id是类字段名
      

  3.   

    但是这样就不是外连接了。
    我想做的是:比如A表100条记录,B表20条记录,A inner join B 查询出来10条记录,C表2条记录。A inner join B left outer join C最终出来的还是10条记录,而不是2条记录。
      

  4.   

    我手写.xml配置文件
    主表:<one-to-many><key><column="id"/>...
    子表:<many-to-one>...主表中的id必须是主键吗?我的表主键都是自增长的,没有实际意义
      

  5.   

    以上问题基本解决!!
    还是先配置表的配置文件,详细参照http://blog.csdn.net/dengyin2000/archive/2005/08/26/465694.aspxHQL:
    from A a ,B b
    left outer join b.C c
    where a.id = b.id
          and a.name='y'
          and b.state='n'
          and c.date='2006-1-31'
    其中b.C是在配置文件中配置的属性。
    但是现在又有一个问题:
    我想把c.date='2006-1-31'放在与left outer join b.C c并列的位置,也就是说先筛选c.date='2006-1-31'再做左连接,上述问题SQL语句依然可以解决:
    left join tableC c 
    on (a.id = b.id and c.date='2006-1-31')然而HQL还是写不出来,请大家指教!