我得到了这个例外
线程中的异常"线程-2" java.lang.ClassCastException:[Ljava.lang.Object;无法在java.lang.Thread.run(Thread.java:745)的com.freeGo.util.HealthTask.run(HealthTask.java:33)中转换为com.freeGo.model.Pump
我的代码是:
@Query("SELECT p.id, p.timestamp FROM Pump p WHERE p.isActive = :isActive")
public List<Pump> findByIsActive(@Param("isActive") int isActive);
如果我不使用Query annotation作为
public List<Pump> findByIsActive(@Param("isActive") int isActive);
然后它成功运行,但它返回了所有表格数据,但我只想要2列。
我在春季3和jpa的项目。
答案 0 :(得分:4)
查询没有任何问题,如果这是你想要的。您将从查询而不是List<Pump>
获取对象[](对象数组)。因此,请返回类型List<Object[]>
并在第0列中获取id,在第1列中获取时间。
如果你想让代码更好一点,你应该得到查询以返回自定义DTO。
@Query("SELECT new MyDto(p.id, p.timestamp) FROM Pump p WHERE p.isActive = :isActive")
并返回List<MyDto>