hql 语句添加case when 疑惑

lihan6839 2017-06-16 03:41:22
可以生成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
...全文
379 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihan6839 2017-06-16
  • 打赏
  • 举报
回复
引用 3 楼 pany1209 的回复:
[quote=引用 2 楼 lihan6839 的回复:] [quote=引用 1 楼 pany1209 的回复:] java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo.... 类转换错误。。。。报错是在哪一行???
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;
	}
}

[/quote] this.stationmonitorvoldao.findByQuery(this.createQueryString(false, criterias), startIndex, count); .findByQuery方法怎么写的???[/quote]
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);
	

}
李德胜1995 2017-06-16
  • 打赏
  • 举报
回复
引用 2 楼 lihan6839 的回复:
[quote=引用 1 楼 pany1209 的回复:] java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo.... 类转换错误。。。。报错是在哪一行???
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;
	}
}

[/quote] this.stationmonitorvoldao.findByQuery(this.createQueryString(false, criterias), startIndex, count); .findByQuery方法怎么写的???
lihan6839 2017-06-16
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo.... 类转换错误。。。。报错是在哪一行???
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;
	}
}

李德胜1995 2017-06-16
  • 打赏
  • 举报
回复
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dwz.persistence.beans.StationMonitorVolInfo.... 类转换错误。。。。报错是在哪一行???
代码下载链接: https://pan.quark.cn/s/90fbf78c3289 "1元云购"是一种依托互联网的购物方式,用户仅需投入微小的资金(一般为一元)便有机会赢取高价值商品。此类模式常借助抽奖机制来判定获胜者,从而吸引众多用户加入。"1元云购源代码"是承载该业务流程的程序代码,其用途在于搭建一个完整的1元云购系统。 在构建1元云购源代码的过程中,主要包含以下几个核心技术要点: 1. **数据库架构**:为了有效存储商品详情、用户资料、交易历史及开奖结果,必须设计科学合理的数据库框架。这包括商品数据表、用户信息表、订单记录表和开奖记录表等,确保数据的统一性与完整性。 2. **支付渠道对接**:1元云购平台需与第三方支付服务(例如支付宝、微信支付)进行对接,以实现用户的在线支付操作。这涉及API接口调用、交易状态同步、退款流程管理等环节。 3. **随机数生成策略**:抽奖过程的核心在于公平透明地选定获奖者,通常采用随机数生成策略来实现。该策略需保障每位参与者拥有相等的获奖机会,同时防止欺诈行为。 4. **用户界面开发**:卓越的用户体验是吸引参与者的关键因素。前端页面应兼具视觉吸引力与操作便捷性,清晰展示商品信息、购买步骤、中奖规范等,并提供用户注册、登录、查询订单等功能。 5. **服务器程序设计**:后端系统负责处理用户请求,如管理订单、计算中奖号码、更新数据库信息等。这部分通常采用PHP等服务器端技术实现,需应对并发访问与高负载情形。 6. **安全措施**:1元云购平台可能面临恶意攻击,例如SQL注入、XSS跨站脚本攻击等。因此,源代码需遵循安全编程准则,对用户输入进行过滤与校验,同时运用HTTPS等加密手段保障数据传输安全。 7. **...

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧