如果我编译我使用的java程序,我收到此错误,?

时间:2017-06-22 14:24:47

标签: java hibernate

这是我的代码,我遇到了这个问题而User是类

  

线程“main”中的异常java.lang.ClassCastException:java.lang.String无法在com.simpleprogrammer.program.main(program.java:32)上强制转换为com.simpleprogrammer.User“

Session session = Hibernate_Utilites.getSessionFactory().openSession();
        session.beginTransaction();
        org.hibernate.Query query=session.createQuery("select entry from userHistory ");
        List<User> us=query.list();
        for(User du:us)
        {
            System.out.println(du.getName());
        }


        session.getTransaction().commit();
        session.close();

2 个答案:

答案 0 :(得分:0)

您的hibernate查询似乎是从entry实体中选择一个字段userHistory。因此,当您执行List<User> us=query.list();时,它会尝试将该查询的结果转换为User个对象的列表,但所有找到的都是entry字符串。

将您的查询更改为select u from userHistory u之类的内容,以便抓取整个实体。我假设“userHistory”被映射到User类,否则你将有一个不同的ClassCastException。

但是,如果目标是让entry代表实体的每个ROW并且实际上不是User对象上的属性,那么您只需将userHistory别名作为条目我上面的例子中的u。你没有提供你的用户类,所以我只是在这里做出推测。

答案 1 :(得分:0)

//解决了这个

org.hibernate.Query query = session.createQuery(“from userHistory”);         列出us = query.list();         for(userHistory du:us)         {             的System.out.println(du.getEntry());         }