我试图根据布尔@Param来构建查询,而困难之处在于我没有使用经典运算符(=,<,> ...)来构建查询的结尾。
在此示例中,假设我要获取所有与Account对象无关的Sales对象(如果我在@Param中传递false)或与Account相关(如果我在@Param中传递true) ):
@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}。
有人曾经尝试过这个并且可以给我写这个的好方法吗?谢谢!
答案 0 :(得分:1)
像下面这样重构查询代码:
@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);