You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Hibernate与Spring Data后JPA查询QuerySyntaxException报错求助

问题排查与解决

错误根源

从报错堆栈的QuerySyntaxException: Invalid path: 'studentBO.isDeletedFromSync'可以明确:HQL查询中实体别名大小写不一致。
你在查询里同时使用了两种别名写法:studentBo(驼峰小写B)和studentBO(大写B),升级后的Hibernate对HQL别名的大小写敏感性提升,不再允许这种不一致的写法,导致无法识别字段路径。

另外你调整后的查询还存在逻辑错误:把studentBO.isDeletedFromSync的条件放到了UserBO的子查询里,但这个字段属于StudentBO,不属于UserBO,所以即使大小写改对了,逻辑上也不成立。

修正后的查询语句

统一别名大小写,并将isDeletedFromSync的条件放回StudentBO的查询层级:

@Query("select grade.gradeName from GradeBO grade where grade.gradeName <> '' and grade in (select studentBo.gradeBO from StudentBO studentBo where studentBo.id in(select userBo.id from UserBO userBo where userBo.role='STUDENT' and userBo.active=:isActive and userBo.schoolBO.id=:schoolId) and (studentBo.isDeletedFromSync is null or studentBo.isDeletedFromSync=false))")
List<String> getActiveGrades(@Param("schoolId") Long schoolId, @Param("isActive") Boolean isActive);

关键修正点

  • 所有引用StudentBO的别名统一为studentBo(你也可以统一用studentBO,只要全查询里写法完全一致即可)
  • 将isDeletedFromSync的判断条件留在StudentBO的子查询块中,因为该字段是StudentBO的属性,不能放到UserBO的子查询范围内

内容的提问来源于stack exchange,提问作者rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:07:49