可以生成sql 语句,在数据库中查询也没问题,但是会报错,不知道是不是类型转换错误,我是新手,希望大佬们帮我看下。private String createQueryString(boolean useCount,
Map<StationMonitorVolFieldsDB, String> criterias) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
int termCount = 0;
sb.append("select").append(useCount ?  " count(t.id)" : "  t ,case Data_Valid  when '1' then '有效' when '2' then '无效' else '' end ")
.append("  from StationMonitorVolInfo as t");
return sb.toString();
下面报错信息,Hibernate: select top 20 stationmon0_.ID as col_0_0_, case Data_Valid when '1' then '有效' when '2' then '无效' else '' end as col_1_0_, stationmon0_.ID as ID21_, stationmon0_.SERIALPORTEQUIID as SERIALPO2_21_, stationmon0_.dataType as dataType21_, stationmon0_.vol_data as vol4_21_, stationmon0_.data_valid as data5_21_, stationmon0_.updatetime as updatetime21_ from TSTATIONMONITORCIRCLE_VOL stationmon0_ where stationmon0_.SERIALPORTEQUIID='959' and (stationmon0_.dataType like '%V%')
ParamExceptionMappingInterceptor: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo:[Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo

解决方案 »

  1.   

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo....
    类转换错误。报错是在哪一行???
      

  2.   

    for循环这一行
    @Override
    public Collection<StationMonitorVol> searchStationMonitorVolFromDB(
    Map<StationMonitorVolFieldsDB, String> criterias,
    String orderField, int startIndex, int count) {
    // TODO Auto-generated method stub
    ArrayList<StationMonitorVol> stationmonitorvolList = new ArrayList<StationMonitorVol>();
    if (criterias == null)

    return stationmonitorvolList; Collection<StationMonitorVolInfo> InstationmonitorvolList = this.stationmonitorvoldao.findByQuery(this
    .createQueryString(false, criterias), startIndex, count); if (InstationmonitorvolList == null || InstationmonitorvolList.size() == 0)
    return stationmonitorvolList; for (StationMonitorVolInfo Ins: InstationmonitorvolList) {
    stationmonitorvolList.add(new StationMonitorVolImpl(Ins));
    }
    //System.out.println(stationBaseList);
    return stationmonitorvolList;
    }下面是
    package dwz.persistence.beans;import java.math.BigDecimal;
    import java.sql.Date;public class StationMonitorVolInfo { private Integer ID;
    private Integer SERIALPORTEQUIID;
    private String dataType;
    private BigDecimal vol_data;
    private Integer data_valid;
    private Date updatetime;
    public Integer getID() {
    return ID;
    } public void setID(Integer ID) {
    this.ID = ID;
    } public Integer getSERIALPORTEQUIID() {
    return SERIALPORTEQUIID;
    } public void setSERIALPORTEQUIID(Integer SERIALPORTEQUIID) {
    this.SERIALPORTEQUIID = SERIALPORTEQUIID;
    } public String getDataType() {
    return dataType;
    } public void setDataType(String dataType) {
    this.dataType = dataType;
    } public BigDecimal getVol_data() {
    return vol_data;
    } public void setVol_data(BigDecimal vol_data) {
    this.vol_data = vol_data;
    } public Integer getData_valid() {
    return data_valid;
    } public void setData_valid(Integer data_valid) {
    this.data_valid = data_valid;
    } public Date getUpdatetime() {
    return updatetime;
    } public void setUpdatetime(Date updatetime) {
    this.updatetime = updatetime;
    }
    }
      

  3.   

    for循环这一行
    @Override
    public Collection<StationMonitorVol> searchStationMonitorVolFromDB(
    Map<StationMonitorVolFieldsDB, String> criterias,
    String orderField, int startIndex, int count) {
    // TODO Auto-generated method stub
    ArrayList<StationMonitorVol> stationmonitorvolList = new ArrayList<StationMonitorVol>();
    if (criterias == null)

    return stationmonitorvolList; Collection<StationMonitorVolInfo> InstationmonitorvolList = this.stationmonitorvoldao.findByQuery(this
    .createQueryString(false, criterias), startIndex, count); if (InstationmonitorvolList == null || InstationmonitorvolList.size() == 0)
    return stationmonitorvolList; for (StationMonitorVolInfo Ins: InstationmonitorvolList) {
    stationmonitorvolList.add(new StationMonitorVolImpl(Ins));
    }
    //System.out.println(stationBaseList);
    return stationmonitorvolList;
    }下面是
    package dwz.persistence.beans;import java.math.BigDecimal;
    import java.sql.Date;public class StationMonitorVolInfo { private Integer ID;
    private Integer SERIALPORTEQUIID;
    private String dataType;
    private BigDecimal vol_data;
    private Integer data_valid;
    private Date updatetime;
    public Integer getID() {
    return ID;
    } public void setID(Integer ID) {
    this.ID = ID;
    } public Integer getSERIALPORTEQUIID() {
    return SERIALPORTEQUIID;
    } public void setSERIALPORTEQUIID(Integer SERIALPORTEQUIID) {
    this.SERIALPORTEQUIID = SERIALPORTEQUIID;
    } public String getDataType() {
    return dataType;
    } public void setDataType(String dataType) {
    this.dataType = dataType;
    } public BigDecimal getVol_data() {
    return vol_data;
    } public void setVol_data(BigDecimal vol_data) {
    this.vol_data = vol_data;
    } public Integer getData_valid() {
    return data_valid;
    } public void setData_valid(Integer data_valid) {
    this.data_valid = data_valid;
    } public Date getUpdatetime() {
    return updatetime;
    } public void setUpdatetime(Date updatetime) {
    this.updatetime = updatetime;
    }
    }
    this.stationmonitorvoldao.findByQuery(this.createQueryString(false, criterias), startIndex, count);
    .findByQuery方法怎么写的???
      

  4.   

    for循环这一行
    @Override
    public Collection<StationMonitorVol> searchStationMonitorVolFromDB(
    Map<StationMonitorVolFieldsDB, String> criterias,
    String orderField, int startIndex, int count) {
    // TODO Auto-generated method stub
    ArrayList<StationMonitorVol> stationmonitorvolList = new ArrayList<StationMonitorVol>();
    if (criterias == null)

    return stationmonitorvolList; Collection<StationMonitorVolInfo> InstationmonitorvolList = this.stationmonitorvoldao.findByQuery(this
    .createQueryString(false, criterias), startIndex, count); if (InstationmonitorvolList == null || InstationmonitorvolList.size() == 0)
    return stationmonitorvolList; for (StationMonitorVolInfo Ins: InstationmonitorvolList) {
    stationmonitorvolList.add(new StationMonitorVolImpl(Ins));
    }
    //System.out.println(stationBaseList);
    return stationmonitorvolList;
    }下面是
    package dwz.persistence.beans;import java.math.BigDecimal;
    import java.sql.Date;public class StationMonitorVolInfo { private Integer ID;
    private Integer SERIALPORTEQUIID;
    private String dataType;
    private BigDecimal vol_data;
    private Integer data_valid;
    private Date updatetime;
    public Integer getID() {
    return ID;
    } public void setID(Integer ID) {
    this.ID = ID;
    } public Integer getSERIALPORTEQUIID() {
    return SERIALPORTEQUIID;
    } public void setSERIALPORTEQUIID(Integer SERIALPORTEQUIID) {
    this.SERIALPORTEQUIID = SERIALPORTEQUIID;
    } public String getDataType() {
    return dataType;
    } public void setDataType(String dataType) {
    this.dataType = dataType;
    } public BigDecimal getVol_data() {
    return vol_data;
    } public void setVol_data(BigDecimal vol_data) {
    this.vol_data = vol_data;
    } public Integer getData_valid() {
    return data_valid;
    } public void setData_valid(Integer data_valid) {
    this.data_valid = data_valid;
    } public Date getUpdatetime() {
    return updatetime;
    } public void setUpdatetime(Date updatetime) {
    this.updatetime = updatetime;
    }
    }
    this.stationmonitorvoldao.findByQuery(this.createQueryString(false, criterias), startIndex, count);
    .findByQuery方法怎么写的???package dwz.dal;import java.util.Collection;
    import java.util.List;import dwz.persistence.beans.StationBaseInfo;public interface BaseDao<T, PK extends java.io.Serializable> { public void insert(T model);

    public void insertBatch(List<T> modelList); public void update(T model); public void delete(T model); public T findByPrimaryKey(PK modelPK) throws LookupException; public java.util.Collection<T> findAll();

    @SuppressWarnings("unchecked")
    public java.util.Collection findByAdvancedQuery(final String queryStr,
    final int startIndex, final int count);

    public java.util.Collection<T> findByQuery(final String queryStr,
    final int startIndex, final int count); public int countAll();

    public int countByQuery(final String queryStr);

    public int countByQuery(final String queryStr, final Object[] params);

    public void callProcedure(String procedure);

    public java.util.Collection findBySQLQuery(final String queryStr,
    final Object[] params, final int startIndex, final int count); public int countBySQLQuery(final String queryStr, final Object[] params);
    }