本帖最后由 s88246843 于 2011-01-20 14:21:11 编辑

解决方案 »

  1.   

    当我放弃第一个时,采用了第2种方法写一个beanpublic class WorkStatistics {
    private String truckNo;
    private String truckName;
    private String tkMark;
    private Double tkWkamount;
    private Double tkWkjourney;
    public WorkStatistics(String truckNo,String truckName,String tkMark,Double tkWkamount,
    Double tkWkjourney){
    this.truckNo = truckNo;
    this.truckName = truckName;
    this.tkMark = tkMark;
    this.tkWkamount = tkWkamount;
    this.tkWkjourney = tkWkjourney;
    }
    public String getTruckNo() {
    return truckNo;
    }
    public void setTruckNo(String truckNo) {
    this.truckNo = truckNo;
    }
    public String getTruckName() {
    return truckName;
    }
    public void setTruckName(String truckName) {
    this.truckName = truckName;
    }
    public String getTkMark() {
    return tkMark;
    }
    public void setTkMark(String tkMark) {
    this.tkMark = tkMark;
    }
    public Double getTkWkamount() {
    return tkWkamount;
    }
    public void setTkWkamount(Double tkWkamount) {
    this.tkWkamount = tkWkamount;
    }
    public Double getTkWkjourney() {
    return tkWkjourney;
    }
    public void setTkWkjourney(Double tkWkjourney) {
    this.tkWkjourney = tkWkjourney;
    }

    }进行更改查询的HQLpublic List dateStatistics(String date){
    // TODO Auto-generated method stub
    StringBuffer hql = new StringBuffer();
    hql.append("select new WorkStatistics(trucks.tkNo,trucks.tkName,trucks.tkMark,sum(tkWkamount),sum(tkWkjourney))");
    hql.append(" from TruckWorkTimes");
    hql.append(" where to_char(tkWkstarttime,'yyyy-mm-dd')='"+date+"'");
    hql.append(" group by trucks.tkNo,trucks.tkMark,trucks.tkName");
    return this.getHibernateTemplate().find(hql.toString());
    }结果还报错(本人很生气,后果很严重)
    org.springframework.orm.hibernate3.HibernateQueryException: Unable to locate class [WorkStatistics] [select new WorkStatistics(trucks.tkNo,trucks.tkName,trucks.tkMark,sum(tkWkamount),sum(tkWkjourney)) from com.dayuan.model.trucks.TruckWorkTimes where to_char(tkWkstarttime,'yyyy-mm-dd')='2011-01-14' group by trucks.tkNo,trucks.tkMark,trucks.tkName]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Unable to locate class [WorkStatistics] [select new WorkStatistics(trucks.tkNo,trucks.tkName,trucks.tkMark,sum(tkWkamount),sum(tkWkjourney)) from com.dayuan.model.trucks.TruckWorkTimes where to_char(tkWkstarttime,'yyyy-mm-dd')='2011-01-14' group by trucks.tkNo,trucks.tkMark,trucks.tkName]
    org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:660)
    org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
    org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
    org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:904)
    com.dayuan.dao.project.YidldDAO.dateStatistics(YidldDAO.java:45)
    com.dayuan.service.project.YidldServiceImp.dateStatistics(YidldServiceImp.java:46)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      

  2.   

    javaBean需要写个无参数构造函数..
      

  3.   

    应该一样的吧。package com.dayuan.model.trucks;import java.util.Date;import com.dayuan.model.project.TransportProject;/**
     * TruckWorkTimes entity. @author MyEclipse Persistence Tools
     */public class TruckWorkTimes implements java.io.Serializable { // Fields private String tkWkno;
    private Trucks trucks;
    private TransportProject transportProject;
    private Double tkWkamount;
    private Double tkWkjourney;
    private Double tkWkmaxspeed;
    private Date tkWkstarttime;
    private Date tkWkendtime;
    private Date tkWktime; // Constructors /** default constructor */
    public TruckWorkTimes() {
    } /** full constructor */
    public TruckWorkTimes(Trucks trucks, TransportProject transportProject,
    Double tkWkamount, Double tkWkjourney, Double tkWkmaxspeed,
    Date tkWkstarttime, Date tkWkendtime, Date tkWktime) {
    this.trucks = trucks;
    this.transportProject = transportProject;
    this.tkWkamount = tkWkamount;
    this.tkWkjourney = tkWkjourney;
    this.tkWkmaxspeed = tkWkmaxspeed;
    this.tkWkstarttime = tkWkstarttime;
    this.tkWkendtime = tkWkendtime;
    this.tkWktime = tkWktime;
    }
    public TruckWorkTimes(Trucks trucks,
    Double tkWkamount, Double tkWkjourney) {
    this.trucks = trucks;
    this.tkWkamount = tkWkamount;
    this.tkWkjourney = tkWkjourney;
    }
    // Property accessors public String getTkWkno() {
    return this.tkWkno;
    } public void setTkWkno(String tkWkno) {
    this.tkWkno = tkWkno;
    } public Trucks getTrucks() {
    return this.trucks;
    } public void setTrucks(Trucks trucks) {
    this.trucks = trucks;
    } public TransportProject getTransportProject() {
    return this.transportProject;
    } public void setTransportProject(TransportProject transportProject) {
    this.transportProject = transportProject;
    } public Double getTkWkamount() {
    return this.tkWkamount;
    } public void setTkWkamount(Double tkWkamount) {
    this.tkWkamount = tkWkamount;
    } public Double getTkWkjourney() {
    return this.tkWkjourney;
    } public void setTkWkjourney(Double tkWkjourney) {
    this.tkWkjourney = tkWkjourney;
    } public Double getTkWkmaxspeed() {
    return this.tkWkmaxspeed;
    } public void setTkWkmaxspeed(Double tkWkmaxspeed) {
    this.tkWkmaxspeed = tkWkmaxspeed;
    } public Date getTkWkstarttime() {
    return this.tkWkstarttime;
    } public void setTkWkstarttime(Date tkWkstarttime) {
    this.tkWkstarttime = tkWkstarttime;
    } public Date getTkWkendtime() {
    return this.tkWkendtime;
    } public void setTkWkendtime(Date tkWkendtime) {
    this.tkWkendtime = tkWkendtime;
    } public Date getTkWktime() {
    return this.tkWktime;
    } public void setTkWktime(Date tkWktime) {
    this.tkWktime = tkWktime;
    }}
    package com.dayuan.model.trucks;import java.util.HashSet;
    import java.util.Set;/**
     * Trucks entity. @author MyEclipse Persistence Tools
     */public class Trucks implements java.io.Serializable { // Fields private Long tkId;
    private String tkNo;
    private String tkName;
    private String tkType;
    private String tkMark;
    private Double tkCapacity;
    private Double tkWeight;
    private Double tkWeighterror;
    private String tkBeizhu;
    private Set truckWorkTimeses = new HashSet(0);
    private Set truckOils = new HashSet(0);
    private Set truckTrackers = new HashSet(0);
    private Set truckRepairs = new HashSet(0); // Constructors /** default constructor */
    public Trucks() {
    }
    public Trucks(String tkNo, String tkName,String tkMark){
    this.tkNo = tkNo;
    this.tkName = tkName;
    this.tkMark = tkMark;
    }
    /** full constructor */
    public Trucks(String tkNo, String tkName, String tkType, String tkMark,
    Double tkCapacity, Double tkWeight, Double tkWeighterror,
    String tkBeizhu, Set truckWorkTimeses, Set truckOils,
    Set truckTrackers, Set truckTrackerRuntimes, Set truckRepairs) {
    this.tkNo = tkNo;
    this.tkName = tkName;
    this.tkType = tkType;
    this.tkMark = tkMark;
    this.tkCapacity = tkCapacity;
    this.tkWeight = tkWeight;
    this.tkWeighterror = tkWeighterror;
    this.tkBeizhu = tkBeizhu;
    this.truckWorkTimeses = truckWorkTimeses;
    this.truckOils = truckOils;
    this.truckTrackers = truckTrackers;
    this.truckRepairs = truckRepairs;
    } // Property accessors public String getTkNo() {
    return this.tkNo;
    } public Long getTkId() {
    return tkId;
    } public void setTkId(Long tkId) {
    this.tkId = tkId;
    } public void setTkNo(String tkNo) {
    this.tkNo = tkNo;
    } public String getTkName() {
    return this.tkName;
    } public void setTkName(String tkName) {
    this.tkName = tkName;
    } public String getTkType() {
    return this.tkType;
    } public void setTkType(String tkType) {
    this.tkType = tkType;
    } public String getTkMark() {
    return this.tkMark;
    } public void setTkMark(String tkMark) {
    this.tkMark = tkMark;
    } public Double getTkCapacity() {
    return this.tkCapacity;
    } public void setTkCapacity(Double tkCapacity) {
    this.tkCapacity = tkCapacity;
    } public Double getTkWeight() {
    return this.tkWeight;
    } public void setTkWeight(Double tkWeight) {
    this.tkWeight = tkWeight;
    } public Double getTkWeighterror() {
    return this.tkWeighterror;
    } public void setTkWeighterror(Double tkWeighterror) {
    this.tkWeighterror = tkWeighterror;
    } public String getTkBeizhu() {
    return this.tkBeizhu;
    } public void setTkBeizhu(String tkBeizhu) {
    this.tkBeizhu = tkBeizhu;
    } public Set getTruckWorkTimeses() {
    return this.truckWorkTimeses;
    } public void setTruckWorkTimeses(Set truckWorkTimeses) {
    this.truckWorkTimeses = truckWorkTimeses;
    } public Set getTruckOils() {
    return this.truckOils;
    } public void setTruckOils(Set truckOils) {
    this.truckOils = truckOils;
    } public Set getTruckTrackers() {
    return this.truckTrackers;
    } public void setTruckTrackers(Set truckTrackers) {
    this.truckTrackers = truckTrackers;
    } public Set getTruckRepairs() {
    return this.truckRepairs;
    } public void setTruckRepairs(Set truckRepairs) {
    this.truckRepairs = truckRepairs;
    }}
      

  4.   

    trucks.TruckWorkTimes where to_char(tkWkstarttime,'yyyy-mm-dd')='2011-01-14' 
    数据库中日期字段是String 类型?
      

  5.   

    解决了!public List dateStatistics(String date){
    // TODO Auto-generated method stub
    StringBuffer hql = new StringBuffer();
    hql.append("select new com.dayuan.model.project.WorkStatistics(trucks.tkNo,trucks.tkName,trucks.tkMark,sum(tkWkamount),sum(tkWkjourney))");
    hql.append(" from TruckWorkTimes");
    hql.append(" where to_char(tkWkstarttime,'yyyy-mm-dd')='"+date+"'");
    hql.append(" group by trucks.tkNo,trucks.tkMark,trucks.tkName");
    return this.getHibernateTemplate().find(hql.toString());
    }