java.lang.ClassCastException:[Ljava.lang.Object;不能转换为className

编程入门 行业动态 更新时间:2024-10-27 14:31:05
本文介绍了java.lang.ClassCastException:[Ljava.lang.Object;不能转换为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()mit(); 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

本文发布于:2023-10-31 05:18:38,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:转换为   ClassCastException   lang   java   className

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!