首页 > 解决方案 > spring boot jpa @query where 子句基于布尔标志参数

问题描述

我正在使用 Spring Boot 2.4.0 版。

我需要从 name 不为 null 的表中获取数据,但它应该基于 mandflag,如果 mandflag=true 则只有 name 不为 null 应该被执行。请建议如何在下面的查询中添加这个基于标志的条件。

@Query("SELECT p FROM testtable p WHERE name is not null  ")
public List<PatientEntity> findRecords(@Param("mandflag") boolean mandflag);

编辑 要求 - 如果输入标志为真,则从名称不为空的表中获取数据

我需要根据布尔标志执行条件的表中的数据

标签: mysqlspring-bootspring-data-jpa

解决方案


@Query("SELECT p FROM testtable p WHERE CASE WHEN :mandflag= TRUE THEN name is not null ELSE 1=1 END", nativeQuery = true)
public List<PatientEntity> findRecords(@Param("mandflag") boolean mandflag);

推荐阅读