Spring Boot SQL查询报错:无父级分类时触发空指针异常
解决JPA查询中无父级分类时的空指针问题
问题根源在于HQL查询的null判断语法错误:
- 原查询用
c.parent = NULL判断父级是否为空,这是SQL/HQL的错误写法——= NULL无法匹配任何null值,因为null与任何值的比较结果都是unknown。 - 当分类无父级时,
c.parent = NULL条件不生效,查询会执行c.parent.enable = true的判断,此时c.parent为null,调用其enable属性直接触发NullPointerException。
修正后的查询代码:
@Query("SELECT c FROM Category c WHERE (c.parent IS NULL OR c.parent.enable = true) AND c.enable = true AND c.alias = ?1") public Category findByAliasEnabled(String alias);
核心修正点:将c.parent = NULL改为c.parent IS NULL,这样能正确匹配父级为null的分类,这类分类会被第一个条件命中,不会进入后续的parent.enable判断,彻底避免空指针。
内容的提问来源于stack exchange,提问作者Ehab Kholif
相关产品推荐
相关产品推荐

