java.lang.ClassCastException:[Ljava.lang.Object;不能转换为className [英] java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to className

查看:810
本文介绍了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().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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆