gpt4 book ai didi

spring-data-jpa - 如何使用可能为空参数的@Query

转载 作者:行者123 更新时间:2023-12-04 02:23:52 52 4
gpt4 key购买 nike

我有一个 @Query 给我带来了麻烦。我想获取具有给定父级的所有网页,即使给定父级为 null。

parent可以设置也可以不设置

我一直在尝试这个:

@Query("SELECT w FROM Webpage w WHERE w.parent = :parent OR (parent IS NULL AND :parent.id < '1')) ORDER BY w.listOrder")
public Page<Webpage> findByParent(@Param("parent") Webpage parent, Pageable page);

还有这个:

@Query("SELECT w FROM Webpage w WHERE w.parent = :parent OR (parent IS NULL AND :parent IS NULL)) ORDER BY w.listOrder")
public Page<Webpage> findByParent(@Param("parent") Webpage parent, Pageable page);

但我得到了异常(exception):

Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract
com.thalasoft.learnintouch.data.jpa.domain.Webpage
com.thalasoft.learnintouch.data.jpa.repository.WebpageRepository.findByParentAndNameAndNotGarbage(com.thalasoft.learnintouch.data.jpa.domain.Webpage,java.lang.String)!

我正在使用 spring 3.2.9.RELEASE 和 spring-data-jpa 1.6.1.RELEASE 版本。

知道如何在给定的父级上进行选择,即使给定的父级为 null 吗?

亲切的问候,

斯蒂芬·艾伯特

最佳答案

如果对提供商的验证不允许您传递空值,您可以将查询拆分为两个。您必须在调用者中有逻辑来确定调用哪个。

查询1(参数不为空):

@Query("SELECT w FROM Webpage w WHERE w.parent = :parent ORDER BY w.listOrder")
public Page<Webpage> findByParent(@Param("parent") Webpage parent, Pageable page);

查询2(参数为空):

@Query("SELECT w FROM Webpage w WHERE w.parent is null ORDER BY w.listOrder")
public Page<Webpage> findByNullParent(Pageable page);

我建议您阅读有关您的提供商的更多文档,了解如何传入空值。

关于spring-data-jpa - 如何使用可能为空参数的@Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985076/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com