你那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出来的放里
public Otbyline(int empid, String empname, int nshift, int nmeal, float ot1, float ot2) { 这个难道不是string吗?
这样用没问题,但仅返回某一天的一条记录: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"); 痛苦的周末... 拜托各位...
更新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; } }
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)) 没有找到这构造函数.
你把POJO改一下吧 然后再配置好关联关系
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...
+ 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出来的放里
自定义的POJO,就是我想得到的结果。
sql语句没写错吗
在hb.xml里面配置好就行了
不过自己的确孤陋寡闻 ,没见过你那样的sqlscript
返回OT 表中 满足条件的Ot 数据的计算结果,如:返回lineid='L18' ,dateid>'2008-06-10' 的empId 的总的上班时间等,且该返回结果需要放到JSP 页面的displaytag 中加以显示,所以需要返回一个集合。不知各位是否清楚...
类型没匹配到,没找到对应的构造函数
float ot1, float ot2) {
这个难道不是string吗?
+ 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");
痛苦的周末...
拜托各位...
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;
}
}
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...
SELECT 子句中的列名必须为分组列或列函数