Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

[Ljava.lang.Object; cannot be cast to

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()); } 
like image 850
splatter_fadli Avatar asked Dec 10 '13 05:12

splatter_fadli


People also ask

What does Ljava Lang object mean?

The java. lang. Object class is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class.

How do I resolve Java Lang ClassCastException error?

To prevent the ClassCastException exception, one should be careful when casting objects to a specific class or interface and ensure that the target type is a child of the source type, and that the actual object is an instance of that type.

What is Ljava Lang String?

Ljava.lang.String stands for the string class (L followed by class/interface name) Few Examples: Class. forName("[D") -> Array of primitive double. Class.

What is Java Lang ClassCastException?

ClassCastException is a runtime exception raised in Java when we try to improperly cast a class from one type to another. It's thrown to indicate that the code has attempted to cast an object to a related class, but of which it is not an instance.


2 Answers

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to id.co.bni.switcherservice.model.SwitcherServiceSource 

Problem is

(List<SwitcherServiceSource>) LoadSource.list(); 

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

List<Object> result = (List<Object>) LoadSource.list();  Iterator itr = result.iterator(); while(itr.hasNext()){    Object[] obj = (Object[]) itr.next();    //now you have one array of Object for each row    String client = String.valueOf(obj[0]); // don't know the type of column CLIENT assuming String     Integer service = Integer.parseInt(String.valueOf(obj[1])); //SERVICE assumed as int    //same way for all obj[2], obj[3], obj[4] } 

Related link

  • Using iterator
like image 163
Aniket Kulkarni Avatar answered Sep 24 '22 03:09

Aniket Kulkarni


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:

public List<User> findByRole(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<User> users = (List<User>) query.list();     return users; } 

So here we are extracting object from query, not a bunch of fields. Also it's looks much more pretty.

like image 32
Gleb S Avatar answered Sep 24 '22 03:09

Gleb S