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
发布评论