I want to get value from the database, in my case I use List
to get the value from the database but I got this error
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)
this is my code
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);
List<SwitcherServiceSource> result_source = (List<SwitcherServiceSource>) LoadSource.list();
for(SwitcherServiceSource tes : result_source){
System.out.println(tes.getSERVICE());
}
any help will be pleasure :)
@raffian, did you mean like this??
List<Switcher> result = (List<Switcher>) LoadSource.list();
for(Switcher tes : result){
System.out.println(tes.getSERVICE());
}
Your query execution will return list of
Object[]
.You need to add query.addEntity(SwitcherServiceSource.class) before calling the .list() on query.
Problem is
This will return a List of Object arrays (Object[]) with scalar values for each column in the
SwitcherServiceSource
table. Hibernate will use ResultSetMetadata to deduce the actual order and types of the returned scalar values.Solution
Related link
I've faced such an issue and dig tones of material. So, to avoid ugly iteration you can simply tune your hql:
You need to frame your query like this
select entity from Entity as entity where ...
Also check such case, it perfectly works for me:
So here we are extracting object from query, not a bunch of fields. Also it's looks much more pretty.