java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity...

191 阅读1分钟

今天在ssh框架第一次写@Modify@Query查询出现的问题,主要原因是@query中应该写HQL语句. 错误代码

@Modifying
    @Query(value ="select d.userId,d.timeType,d.fillTime,d.glucose,d.exerciseType,d.exerciseTime,d.weight,d.diastolicPressure,d.systolicPressure,d.mood,d.moodStr,d.createTime,d.updateTime,d.status from com.lifesci.api.entity.DailyFill as d where d.userUuid=?1 and d.fillTime>?2 order by d.fillTime asc ")
    List<DailyFill> findByUserUuidLimitByFillTime(String userUuid, Date fillTime);

修正后

@Modifying
//    SQL查询的是表和表中的列;HQL查询的是对象与对象中的属性
    //select 可以省略
    @Query(value =" from com.lifesci.api.entity.DailyFill as d where d.userUuid=?1 and d.fillTime>?2 order by d.fillTime asc ")
    List<DailyFill> findByUserUuidLimitByFillTime(String userUuid, Date fillTime);

不同于sql语句写出封装对象列,hql查询结果的封装默认是entity实体.

如果查的封装对象有问题,就会被定义为Object对象,在被用做entity操作时就会报ClassCastException异常