今天在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异常