Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate MYSQL本机查询抛出ClassCastException_Java_Mysql_Sql_Hibernate_Orm - Fatal编程技术网

Java Hibernate MYSQL本机查询抛出ClassCastException

Java Hibernate MYSQL本机查询抛出ClassCastException,java,mysql,sql,hibernate,orm,Java,Mysql,Sql,Hibernate,Orm,使用Hibernate从表中检索整数值,发生以下异常 java.lang.ClassCastException:无法将java.lang.Integer转换为 数据集状态 如果有任何解决此问题的建议,您的查询似乎有问题。您使用了以下SQL: SELECT datasetstatusID from datasetstatus where DatasetID = meta_dataset 但您应该改用HQL: from datasetstatus d where d.datasetID = met

使用Hibernate从表中检索整数值,发生以下异常

java.lang.ClassCastException:无法将java.lang.Integer转换为 数据集状态


如果有任何解决此问题的建议,您的查询似乎有问题。您使用了以下SQL:

SELECT datasetstatusID from datasetstatus where DatasetID = meta_dataset
但您应该改用HQL:

from datasetstatus d where d.datasetID = meta_dataset
这是您修改过的代码:

String q1 = "from datasetstatus d where d.datasetID = :datasetID";
Query query = session.createSQLQuery(q1)
.setParameter("datasetID", meta_dataset);
List<Datasetstatus> dobj = query.list();
for (Datasetstatus dobj1 : dobj) {        
    System.out.println("Value   :: " + dobj1.getDatasetStatusId());
}
String q1=“from datasetstatus d,其中d.datasetID=:datasetID”;
Query=session.createSQLQuery(q1)
.setParameter(“datasetID”,meta_数据集);
List dobj=query.List();
对于(数据集状态dobj1:dobj){
System.out.println(“值::”+dobj1.getDatasetStatusId());
}

您需要将查询更改为:

List<Integer> dobj=
    (List<Integer>) session.createSQLQuery(
        "SELECT ds.datasetstatusID " +
        "from datasetstatus ds " +
        "where ds.datasetId = :dataSetId")
    .setParameter("dataSetId", meta_dataset)
    .list();

您要从pojo类访问特定属性,而不是pojo对象,那么只有您面对的
java.lang.Integer不能强制转换为pojo.Datasetstatus
您可以尝试

 String q1="SELECT a from datasetstatus as a whereDatasetID='"+meta_dataset+"'";
Query query=session.createQuery(q1);
    List<Datasetstatus> dobj=(List<Datasetstatus>) query.list();
    for(Datasetstatus dobj1: dobj) {        
        System.out.println("Value   :: "+dobj1.getDatasetStatusId());
   }
String q1=“从datasetstatus中选择一个作为whereDatasetID=”+meta_dataset+“”;
Query=session.createQuery(q1);
List dobj=(List)query.List();
对于(数据集状态dobj1:dobj){
System.out.println(“值::”+dobj1.getDatasetStatusId());
}
如果你尝试上面的代码,你会得到答案。或者您也可以尝试下面的代码

String q1="SELECT a.datasetstatusID from datasetstatus as a whereDatasetID='"+meta_dataset+"'";
    Query query=session.createSQLQuery(q1);
        List<Object[]> dobj=query.list();
        for(Object dobj1: dobj) {        
            System.out.println("Value   :: "+dobj1.get[0]);
       }
String q1=“从datasetstatus中选择a.datasetstatusID作为whereDatasetID=”+meta_dataset+“”;
Query Query=session.createSQLQuery(q1);
List dobj=query.List();
对于(对象dobj1:dobj){
System.out.println(“值::”+dobj1.get[0]);
}

如果您正在检索单列值,那么理想情况下,您不应该使用POJO类,而应该直接将其强制转换到列表中

List dobj=query.List();
对于(整数dobj1:dobj){
System.out.println(“值::”+dobj1);
}

这将解决您的问题

您能否更新代码,向我们显示Pojo类上的所有注释?您的代码在哪一行崩溃?对于(Datasetstatus dobj1:dobj){System.out.println(“值:”+dobj1.getDatasetStatusId());},我检查了循环(元素检索整数格式)的代码崩溃,然后在聊天室中添加我之后创建聊天室,我无法创建聊天室,需要100个信誉点直到我检查第一个代码不工作它抛出java.lang.ClassCastException我检查了你的代码但不工作。出现异常“无法提取结果集”
List<Datasetstatus> dobj=
    (List<Datasetstatus>) session.createSQLQuery(
    "SELECT ds " +
    "from datasetstatus ds " +
    "where ds.datasetId = :dataSetId")
.setParameter("dataSetId", meta_dataset)
.list();
 String q1="SELECT a from datasetstatus as a whereDatasetID='"+meta_dataset+"'";
Query query=session.createQuery(q1);
    List<Datasetstatus> dobj=(List<Datasetstatus>) query.list();
    for(Datasetstatus dobj1: dobj) {        
        System.out.println("Value   :: "+dobj1.getDatasetStatusId());
   }
String q1="SELECT a.datasetstatusID from datasetstatus as a whereDatasetID='"+meta_dataset+"'";
    Query query=session.createSQLQuery(q1);
        List<Object[]> dobj=query.list();
        for(Object dobj1: dobj) {        
            System.out.println("Value   :: "+dobj1.get[0]);
       }
List<Integer> dobj = query.list();

for(Integer dobj1: dobj) {        
    System.out.println("Value   :: "+dobj1);
}