0

I am getting this given exception

Exception in thread "Thread-2" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.freeGo.model.Pump at com.freeGo.util.HealthTask.run(HealthTask.java:33) at java.lang.Thread.run(Thread.java:745)

My code is :

@Query("SELECT p.id, p.timestamp FROM Pump p WHERE p.isActive = :isActive")
 public List<Pump> findByIsActive(@Param("isActive") int isActive);

if i don't use Query annotation as

public List<Pump> findByIsActive(@Param("isActive") int isActive);

then it's run successfully, but it return's all table data but i want only 2 column.

My project in spring-3 and jpa.

kadir
  • 589
  • 1
  • 7
  • 29
Rajneesh Mishra
  • 228
  • 4
  • 10

1 Answers1

4

There is nothing wrong with the query, if that's what you want. You will be getting a object[] (object array) from the query instead of a List<Pump>. So, make the return type List<Object[]> and get id in column 0 and time in column 1.

If you want to make it a little better code, you should probably get the query to return a custom DTO.

@Query("SELECT new MyDto(p.id, p.timestamp) FROM Pump p WHERE p.isActive = :isActive")

and return a List<MyDto>

Reference: Spring JPA selecting specific columns

Community
  • 1
  • 1
K.Nicholas
  • 10,956
  • 4
  • 46
  • 66