我现在有4张表
湿地 (sid,sname)
站点, (zid,sid,zname)
任务, (rid,rname)
任务日志,(logid,rid,message)
四张表从上到下依次主外关联 
现在我要通过湿地的标号来查询任务日志表的信息!
有什么好办法?
我的想法是
4表外联查询 我现在用sql语句能实现 .但是现在要求用hql语句我就不会写了.
因为生成的join 是对象名 而不是字段... //任务日志表
private String id;
private WaterTaskInfo waterTaskInfo;//任务外键.就是这里是对象
private Date begintime;
private Date endtime;
private Short issuccess;
private String content;希望高手帮帮忙 现在我把lazy=false了 查任务日志表的时候 所有的东西都能出来
如果大家有什么其他的好办法也好

解决方案 »

  1.   

    hql语句其实就是玩的个面向对象,  其实说白了就是  你把以前学的表名该为hibernate映射成的类名,字段改为累中的属性名就ok了    
      

  2.   

    假设下面的四张表对应的HIBERNATE映射类分别是类A,类B,类C,类D,湿地 (sid,sname) 
    站点, (zid,sid,zname) 
    任务, (rid,rname) 
    任务日志,(logid,rid,message) 
    那么hql语句你应该这样写,D.C.B.A.sid=你传进来的参数,即你的湿地的标号就能查出你要的任务日志表的信息了
      

  3.   

    waterTaskInfo 表private String taskId;
    private String name;
    private String period;
    private Integer delaytime;
    private String alarmmode;
    private Short type;
    private String format;
    private Set waterTaskLogs = new HashSet(0);WaterTaskLog 表private String id;
        private WaterTaskInfo waterTaskInfo;//任务外键.就是这里是对象
        private Date begintime;
        private Date endtime;
        private Short issuccess;
        private String content;
    String hql="from WaterTaskInfo as taskinfo inner join WaterTaskLog as tasklog where WaterTaskInfo.taskid=WaterTskLog.waterTaskInfo.taskid";
    这么写报异常
     Path expected for join!高手们 指点一二....
      

  4.   

    from WaterTaskInfo as taskinfo inner join fetch  taskinfo.waterTaskLogs 
      

  5.   

    hql语句中是没有join的说法的!
      

  6.   

    hql语句中是没有join的说法的!