我想从数据库中获取价值,在我的情况下,我用来List
从数据库中获取值,但是我收到了这个错误
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to id.co.bni.switcherservice.model.SwitcherServiceSource at id.co.bni.switcherservice.controller.SwitcherServiceController.LoadData(SwitcherServiceController.java:48) at id.co.bni.switcherservice.controller.SwitcherServiceController.main(SwitcherServiceController.java:62)
这是我的代码
Query LoadSource = session_source.createQuery("select CLIENT,SERVICE,SERVICE_TYPE,PROVIDER_CODE,COUNT(*) FROM SwitcherServiceSource" + " where TIMESTAMP between :awal and :akhir" + " and PROVIDER_CODE is not null group by CLIENT,SERVICE,SERVICE_TYPE,PROVIDER_CODE order by CLIENT,SERVICE,SERVICE_TYPE,PROVIDER_CODE"); LoadSource.setParameter("awal", fromDate); LoadSource.setParameter("akhir", toDate); Listresult_source = (List ) LoadSource.list(); for(SwitcherServiceSource tes : result_source){ System.out.println(tes.getSERVICE()); }
任何帮助都会很愉快:)
@raffian,你的意思是这样吗?
Listresult = (List ) LoadSource.list(); for(Switcher tes : result){ System.out.println(tes.getSERVICE()); }
Aniket Kulka.. 42
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to id.co.bni.switcherservice.model.SwitcherServiceSource
问题是
(List) LoadSource.list();
这将返回一个Object of Array数组(Object []),其中包含SwitcherServiceSource
表中每列的标量值.Hibernate将使用ResultSetMetadata来推断返回的标量值的实际顺序和类型.
List
使用迭代器
Gleb S.. 5
我已经遇到了这样的问题,并且挖掘了材料的语气。因此,为避免难看的迭代,您可以简单地调整hql:
您需要像这样构造查询
select entity from Entity as entity where ...
还要检查这种情况,对我来说非常合适:
public ListfindByRole(String role) { Query query = sessionFactory.getCurrentSession().createQuery("select user from User user join user.userRoles where role_name=:role_name"); query.setString("role_name", role); @SuppressWarnings("unchecked") List users = (List ) query.list(); return users; }
因此,这里我们从查询中提取对象,而不是一堆字段。而且看起来也更漂亮。