这是我的代码,我遇到了这个问题而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();
答案 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()); }