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

Hibernate按关联ID和枚举值查询报PropertyReferenceException如何解决

错误原因

你的Spring Data JPA方法命名不符合规范,解析器在处理QuizStateTypeIs_DELETED片段时,将Is识别为QuizStateType类的属性进行匹配,而枚举类中不存在该属性,因此抛出属性找不到的异常。同时你的Repository泛型主键类型定义错误,Inquiry的主键类型是InquiryId而非UUID,也存在潜在报错风险。

正确实现方式

方案1:传枚举参数(推荐,复用性最高)

方法定义支持任意状态查询,调用时传入QuizStateType.DELETED即可:

public interface InquiryRepository extends JpaRepository<Inquiry, InquiryId> {
    List<Inquiry> findByConferenceSessionIdAndQuizStateType(UUID conferenceSessionId, QuizStateType state);
}

方案2:固定查询DELETED状态(无需额外传参)

直接在方法名中拼接枚举值即可,无需加下划线分隔:

public interface InquiryRepository extends JpaRepository<Inquiry, InquiryId> {
    List<Inquiry> findByConferenceSessionIdAndQuizStateTypeEqualsDELETED(UUID conferenceSessionId);
}

方案3:使用@Query手动写查询(逻辑最直观,避免长方法名)

public interface InquiryRepository extends JpaRepository<Inquiry, InquiryId> {
    @Query("SELECT i FROM Inquiry i WHERE i.conferenceSession.id = :sessionId AND i.quizStateType = 'DELETED'")
    List<Inquiry> findDeletedInquiriesByConferenceSessionId(UUID sessionId);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:24:04