java 使用或条件创建查询字符串

3htmauhk  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(112)

我创建了一个包含字符串的jpql查询

StringBuilder stringQuery = new StringBuilder();

    stringQuery.append("select school from School school where   ");

    if(schooSearch.name()!=null && !schooSearch.name()){

        stringQuery.append(" contains( ");
        stringQuery.append("school.name, ");
        stringQuery.append(":name");
        stringQuery.append(" ) > 0 ");
    }

    if(schooSearch.adr()!=null && !schooSearch.adr().isEmpty()){

        stringQuery.append(" or ");
        stringQuery.append(" school.adr like  ");
        stringQuery.append(":adr");

    }

所有条件使用,我有许多其他领域。
如果它是第一个字段,而我们需要一个where,那么有什么方法可以避免检查每个条件

baubqpgj

baubqpgj1#

我建议使用灵活的事先准备好的发言:

select school
from School school
where (school.name LIKE :name OR :name IS NULL) AND
      (school.adr LIKE :adr OR :adr IS NULL)

WHERE子句中的每个条件都将计算为true,如果绑定参数为null,则不执行任何操作。请注意,JPA没有任何contains()函数,因此您应该将%some name%绑定到:name参数。

相关问题