使用Hibernate从表中检索整数值,出现以下异常,
java.lang.ClassCastException:不能将java.lang.Integer强制转换为
数据集状态
String q1="SELECT datasetstatusID from datasetstatus where DatasetID='"+meta_dataset+"'";
Query query=session.createSQLQuery(q1);
List<Datasetstatus> dobj=query.list();
for(Datasetstatus dobj1: dobj) {
System.out.println("Value :: "+dobj1.getDatasetStatusId());
}
Pojo类格式,
public class Datasetstatus implements java.io.Serializable {
private Integer datasetStatusId;
private String datasetId;
public Datasetstatus(String datasetId) {
this.datasetId = datasetId;
}
public Integer getDatasetStatusId() {
return this.datasetStatusId;
}
public void setDatasetStatusId(Integer datasetStatusId) {
this.datasetStatusId = datasetStatusId;
}
public String getDatasetId() {
return this.datasetId;
}
public void setDatasetId(String datasetId) {
this.datasetId = datasetId;
}
}
如果有解决这个问题的建议
最佳答案
您需要将查询更改为:
List<Integer> dobj=
(List<Integer>) session.createSQLQuery(
"SELECT ds.datasetstatusID " +
"from datasetstatus ds " +
"where ds.datasetId = :dataSetId")
.setParameter("dataSetId", meta_dataset)
.list();
datasetstatusID
是一个整数,而不是Datasetstatus
。如果您想返回
Datasetstatus
,您的查询将是:List<Datasetstatus> dobj=
(List<Datasetstatus>) session.createSQLQuery(
"SELECT ds " +
"from datasetstatus ds " +
"where ds.datasetId = :dataSetId")
.setParameter("dataSetId", meta_dataset)
.list();