Java Hibernate MYSQL本机查询抛出ClassCastException
使用Hibernate从表中检索整数值,发生以下异常 java.lang.ClassCastException:无法将java.lang.Integer转换为 数据集状态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
如果有任何解决此问题的建议,您的查询似乎有问题。您使用了以下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);
}