数据库:MySQL
现有一段SQL代码,想将其翻译为Hibernate的HQL语句或者等效果的HQL语句,求高手指点。请高手大神帮我把这段SQL语句翻译成HQL语句:
SELECT  c.* FROM (SELECT aa.* FROM (SELECT a.* FROM changerestfrom a WHERE a.applyPeopleId = 30 AND a.isEffect = '有效') aa INNER JOIN checkinresulttemp b ON b.checkInPeopleId = 30 AND TO_DAYS(aa.workTime) = TO_DAYS(b.checkInDate)  ) c
INNER JOIN (SELECT d.checkInDate FROM checkinresulttemp d WHERE d.checkInPeopleId = 30 ) e ON TO_DAYS(c.changeTime) = TO_DAYS(e.checkInDate); 

解决方案 »

  1.   

    SELECT  c FROM (SELECT aa FROM (SELECT a FROM changerestfrom a WHERE a.applyPeopleId = 30 AND a.isEffect = '有效') aa INNER JOIN checkinresulttemp b ON b.checkInPeopleId = 30 AND TO_DAYS(aa.workTime) = TO_DAYS(b.checkInDate)  ) c
    INNER JOIN (SELECT d.checkInDate FROM checkinresulttemp d WHERE d.checkInPeopleId = 30 )
      

  2.   

    把对象的属性字段贴上来。
    其实hql转换为sql很简单。告诉你个方法。sql 面向数据库表查询,hql 面向对象查询。hql : from 后面跟的 类名+类对象 where 后用对象的属性做条件sql: from 后面跟的是表名 where 后 用表中字段做条件
      

  3.   

    这个比你用HQL直观,特别是嵌套多的情况下
      

  4.   


    顶一个!
    有必要转hql么?
    业务复杂的查询(比如多分支,逻辑控制,存储过程,索引视图,触发器),是hibernate难以做到的,楼主不用太执着,只要能运行,得到你想要的结果,效率也ok,就挺好了撒!
      

  5.   

    orm的缺点就是这种查询,对添删改操作很好用,但查询还是用SQL感觉比较灵活。
      

  6.   

    我发现HQL只能在where里写子查询,真是麻烦。谢谢各位的回答。