本帖最后由 SIMONJZF 于 2009-08-07 17:41:49 编辑

解决方案 »

  1.   

    Otbyline是一个表的结构POJO, 还是你自己另外定义的一个POJO?
      

  2.   

    你那sql语句写的有问题。"select new com.bean.Otbyline(o.emp.empId,o.emp.empName,sum(o.nshift),sum(o.nmeal),sum(o.otNum1),sum(o.otNum2)) from Ot as o where o.emp.org.lineId='"
                                    + lineId
                                    + "' and o.dateId >'"
                                    + dateId
                                    + "' group by o.emp.empId");
    先分开写把拿出来new com.bean.Otbyline(o.emp.empId,o.emp.empName,sum(o.nshift),sum(o.nmeal),sum(o.otNum1),sum(o.otNum2)
    在把new出来的放里
      

  3.   


    自定义的POJO,就是我想得到的结果。
      

  4.   

    sql语句没看明白  
    sql语句没写错吗
      

  5.   

    没有必要再做个逻辑处理的pojo吧,直接用关联不行吗?
    在hb.xml里面配置好就行了
    不过自己的确孤陋寡闻 ,没见过你那样的sqlscript
      

  6.   

    他把没有像这样的构造方法!你再改写一下你的pojo
      

  7.   

    补充声明一下:该查询语句是想实现如下结果:
    返回OT 表中 满足条件的Ot 数据的计算结果,如:返回lineid='L18' ,dateid>'2008-06-10' 的empId 的总的上班时间等,且该返回结果需要放到JSP 页面的displaytag 中加以显示,所以需要返回一个集合。不知各位是否清楚...
      

  8.   

    hibernate.PropertyNotFoundException: no appropriate constructor in
      

  9.   

    没错,我清楚是在Otbyline 中找不到该构造方法,但我明明是写了的
      

  10.   

    痛苦的周末,在 select new Otbyline(?,?,?) from ...new 自定义类时,该类的属性中是否可以使用聚合函数?
      

  11.   

    你聚合函数sum求的都是int或者float类型的,但是你构造函数中的类型确实string类型的。
    类型没匹配到,没找到对应的构造函数
      

  12.   

    public Otbyline(int empid, String empname, int nshift, int nmeal,
                float ot1, float ot2) {
    这个难道不是string吗?
      

  13.   

    这样用没问题,但仅返回某一天的一条记录:select distinct new com.lenovo.mfgot.bean.Otbyline(o.emp,o.nshift,o.nmeal,o.otNum1,o.otNum2) from Ot as o where o.emp.org.lineId='"
    + lineId
    + "' and o.dateId >'"
    + dateId
    + "' group by o.emp.empId");如果加上sum()即如下,就会报找不到相应的构造方法,如果是类型不匹配,是那个字段的类型不匹配?或是把这个bean 给从新实现一下吧!
    select distinct new com.lenovo.mfgot.bean.Otbyline(o.emp,sum(o.nshift),sum(o.nmeal),sum(o.otNum1),sum(o.otNum2)) from Ot as o where o.emp.org.lineId='"
    + lineId
    + "' and o.dateId >'"
    + dateId
    + "' group by o.emp.empId");
    痛苦的周末...
    拜托各位...
      

  14.   

    更新Otbylinepublic class Otbyline implements java.io.Serializable {
    private static final long serialVersionUID = 1L; private Emp emp;

    private int nshift;
    private int nmeal;
    private float ot1;
    private float ot2; // Constructors /** default constructor */
    public Otbyline() {
    }
    /** full constructor */
    public Otbyline(Emp emp, int nshift, int nmeal,
    float ot1, float ot2) { this.emp = emp;
    this.nshift = nshift;
    this.nmeal = nmeal;
    this.ot1 = ot1;
    this.ot2 = ot2; }
    public Emp getEmp() {
    return emp;
    } public void setEmp(Emp emp) {
    this.emp = emp;
    } public int getNshift() {
    return nshift;
    } public void setNshift(int nshift) {
    this.nshift = nshift;
    } public int getNmeal() {
    return nmeal;
    } public void setNmeal(int nmeal) {
    this.nmeal = nmeal;
    } public float getOt1() {
    return ot1;
    } public void setOt1(float ot1) {
    this.ot1 = ot1;
    } public float getOt2() {
    return ot2;
    } public void setOt2(float ot2) {
    this.ot2 = ot2;
    }
    }
      

  15.   

     Unable to locate appropriate constructor on class [com.bean.Otbyline] [select new com.bean.Otbyline(o.emp.empId,o.emp.empName,sum(o.nshift),sum(o.nmeal),sum(o.otNum1),sum(o.otNum2)) 没有找到这构造函数.
      

  16.   

    你把POJO改一下吧 然后再配置好关联关系
      

  17.   

    private int empid;
        private String empname;
        private int nshift;
        private int nmeal;
        private float ot1;
        private float ot2;POJO有问题。大哥。。是这么写的吗?
    private Integer empid;
    private String empname;
    private Integer...
    ......
    Float...
      

  18.   

    问题源于group by。
    SELECT 子句中的列名必须为分组列或列函数