我目前正在开发我的项目的搜索和过滤功能。我正在尝试使用此请求主体检索数据:
{
"researchers": [
"Jhon Doe"
],
"unit": null,
"agency":null,
"date": null,
"status": null,
"budget": null
}
下面是从ReasearchRepository检索此数据的方法:
@Query("select r from Research r " +
"left join r.fundingAgencies fundingAgencies " +
"left join r.researchers researchers " +
"where (:budgetStart is null or :budgetEnd is null or r.budget between :budgetStart and :budgetEnd )" +
"and (:startDate is null or r.startDate >= :startDate) " +
"and (:endDate is null or r.endDate <= :endDate) " +
"and (:agencyNames is null or fundingAgencies.agencyName in :agencyNames) " +
"and (:unitNames is null or r.deliveryUnit.unitName in :unitNames )" +
"and (:names is null or researchers.name in :names ) " +
"and (:researchStatuses is null or r.researchStatus in :researchStatuses)")
List<Research> findAdvanced( @Param("budgetStart") Double budgetStart,
@Param("budgetEnd") Double budgetEnd,
@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate,
@Param("agencyNames") Collection<String> agencyNames,
@Param("unitNames") Collection<String> unitNames,
@Param("names") Collection<String> names,
@Param("researchStatuses") Collection<ResearchStatus> researchStatuses);
我的问题是,当我试图从请求中的给定值中查找数据时,它返回一个空列表[],即使它存在于数据库中。我想要实现的是,如果参数为null,它将忽略查询中的特定条件,并且仍将返回数据。
我刚看完贝尔东的那篇文章。
我还找到了另一篇关于使用Criteria API的文章,但要理解这一点需要很多时间。我的项目有点仓促。
蒂亚
我似乎是一个使用规范的好案例。
https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
问题内容: 我想要一个带有两个参数的spring数据存储库接口。有没有办法使其具有以下行为? 如果两个参数都有一个值,我希望它正常运行并对两个值都执行“与”运算。 例如,如果第二个参数为null,则它将仅按ParameterOne搜索 有什么建议么? 问题答案: 我不知道这是可能的仓库方法命名,但你可以使用像
我想要一个spring数据存储库接口,它采用两个参数。有没有办法使其具有以下行为? 如果这两个参数都有一个值,我希望它正常运行,并对这两个值执行“and”。 例如,如果第二个参数为null,则它将仅按ParameterOne进行搜索 有什么建议吗?
问题内容: 我有一个存储过程,可根据4个参数从表中获取信息。 我想基于参数获取值,但是如果参数为NULL,则不会检查该参数。因此,如果所有4个参数都为null,则将显示整个表。 这是我的SP(如您所见,这仅适用于1个参数atm): 有什么方法可以做到, 而 不必为每种可能的组合都加一个(15个IF)? 问题答案: 怎么样 在这种情况下,您可能还使用了 但总的来说,您可以尝试类似
说我有下面的JPA方法: 用户通过输入字段和选择字段过滤这些对象的列表,从而调用此方法: 在这种情况下,如果用户不使用该字段进行搜索,则布尔值可以是true、false或null。看起来JPA实际上是在搜索一个空值,而我希望它忽略任何空值。我已经能够使用以下代码进行此组合搜索: 这是可行的,但显然,在一个有8个搜索选项的页面上,这将成为一场噩梦。字符串参数没有这个问题,因为当用户不选择过滤器时,它
在我的flutter应用程序中,我导入了flutter库。然而,这个库目前不支持flutter Web。图书馆不是我的应用程序使用的必要条件。 主要问题:是否有任何方法来检查导入的库是否不受支持,然后在这种情况下我可以删除部分UI和代码?
问题内容: 我正在寻找一种创建忽略空格的学说查询的方法。我尝试用replace,但是我一直都收到 预期的已知功能,得到“替换” 我的查询看起来像: 问题答案: 好的,我编写了一个替换DQL函数。 接下来在app / config.yml中,我添加: 最后,我在控制器中创建了一个DQL查询: 最有趣的是,“引号”非常重要。这意味着您可以在select,from,setParameter和orderB