Spring Data JPA 使用 SpEL 语法有条件地构建查询
Spring Data JPA Use SpEL syntax to conditionally build query
我尝试根据布尔值 @Param 构建查询,困难在于我在不使用经典运算符(=、<、> ...)的情况下构建查询的结尾。
例如,假设我想获取与帐户对象无关(如果我在@Param 中传递 false)或与帐户相关(如果我在@Param) :
@Query("SELECT sale ....
WHERE sale.account :#{isbound ? NOT NULL : IS NULL}")
public List<Sale> getSales(@Param("isbound") boolean isBound);
我尝试了一些基于官方 Spring 文档 (https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions) 的语法,但他们所有的示例都在表达式之前使用运算符,如下所示:entity = #{the_expression}.
有没有人曾经尝试过这个并且可以给我写这个的好方法?谢谢!
重构您的查询代码,如下所示:
@Query("SELECT sale ....
WHERE (true = :isbound and sale.account is not null)
or (false = :isbound and sale.account is null)")
public List<Sale> getSales(@Param("isbound") boolean isBound);
我尝试根据布尔值 @Param 构建查询,困难在于我在不使用经典运算符(=、<、> ...)的情况下构建查询的结尾。
例如,假设我想获取与帐户对象无关(如果我在@Param 中传递 false)或与帐户相关(如果我在@Param) :
@Query("SELECT sale ....
WHERE sale.account :#{isbound ? NOT NULL : IS NULL}")
public List<Sale> getSales(@Param("isbound") boolean isBound);
我尝试了一些基于官方 Spring 文档 (https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions) 的语法,但他们所有的示例都在表达式之前使用运算符,如下所示:entity = #{the_expression}.
有没有人曾经尝试过这个并且可以给我写这个的好方法?谢谢!
重构您的查询代码,如下所示:
@Query("SELECT sale ....
WHERE (true = :isbound and sale.account is not null)
or (false = :isbound and sale.account is null)")
public List<Sale> getSales(@Param("isbound") boolean isBound);