java.lang.ClassCastException:[Ljava.lang.Object;不能转换为className [英] java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to className
问题描述
public void getDetails(){
try {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
String hql =select c.mobile,c.password FROM CrbtSubMasterDemo c where rownum< 20;
Query query = session.createQuery(hql);
列表< CrbtSubMasterDemo> itr = query.list();
session.getTransaction()。commit();
for(CrbtSubMasterDemo pojo:itr){// excepion line
System.out.println([+ pojo.getMobile()+]);
}
} catch(Exception e){
e.printStackTrace();
CrbtSubMasterDemo 与数据库。
当我尝试运行它时,它会给出以下异常:
java.lang.ClassCastException:[Ljava.lang 。目的;无法转换为com.telemune.demoPojo.CrbtSubMasterDemo
at com.telemune.demoHibernate.QueryTester.getDetails(QueryTester.java:57)
at com.telemune.demoHibernate.QueryTester.main(QueryTester.java :23)
问题是query.list()返回pojo类的对象列表。那么为什么是这个例外。我是Hibernate的新手,对不起,如果它是一个愚蠢的问题。解决方案
主席先生,很多时候用户面临这种需求。 Hibernate有ResultTransformer来转换Object中的hql / sql。
public CrbtSubMasterDemo {
private Stirng mobile;
私人字符串密码;
public CrbtSubMasterDemo(){
--------------
}
##### after设置转换集合,无论你选择哪一列应该作为你的对象的属性名称给出
String hql =select c.mobile as mobile,c.password as password FROM CrbtSubMasterDemo c where rownum< 20;
Query query = session.createQuery(hql);
列表< CrbtSubMasterDemo> itr = query.setResultTransformer(Transformers.aliasToBean(CrbtSubMasterDemo.class)).list();
##无需提交交易。
}
它会将您的查询转换为CrbtSubMasterDemo
Code:
public void getDetails() {
try {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
String hql = "select c.mobile, c.password FROM CrbtSubMasterDemo c where rownum<20";
Query query = session.createQuery(hql);
List<CrbtSubMasterDemo> itr = query.list();
session.getTransaction().commit();
for (CrbtSubMasterDemo pojo : itr) {//excepion line
System.out.println("[" + pojo.getMobile() + "]");
}
} catch (Exception e) {
e.printStackTrace();
}
}
CrbtSubMasterDemo is pojo mapped with the db. When I try to run it, it gives following Exception:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.telemune.demoPojo.CrbtSubMasterDemo
at com.telemune.demoHibernate.QueryTester.getDetails(QueryTester.java:57)
at com.telemune.demoHibernate.QueryTester.main(QueryTester.java:23)
The question is query.list() is returning the list of objects of pojo class. Then why is this Exception. I am new to Hibernate, sorry if its a silly question.
Sir, Many times user faces this kinda requirements . Hibernate has ResultTransformer to convert a hql/sql in Object.
public CrbtSubMasterDemo{
private Stirng mobile;
private String password;
public CrbtSubMasterDemo(){
--------------
}
#####after setting the transation set whichever columns you are selecting should be given as name of property of your object
String hql = "select c.mobile as mobile, c.password as password FROM CrbtSubMasterDemo c where rownum<20";
Query query = session.createQuery(hql);
List<CrbtSubMasterDemo> itr = query.setResultTransformer(Transformers.aliasToBean(CrbtSubMasterDemo.class) ).list();
##No need to commit the transaction.
}
It will convert you query into the CrbtSubMasterDemo
这篇关于java.lang.ClassCastException:[Ljava.lang.Object;不能转换为className的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!