使用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();

09-28 02:44