我创建了一个包含字符串的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,那么有什么方法可以避免检查每个条件
1条答案
按热度按时间baubqpgj1#
我建议使用灵活的事先准备好的发言:
WHERE
子句中的每个条件都将计算为true,如果绑定参数为null,则不执行任何操作。请注意,JPA没有任何contains()
函数,因此您应该将%some name%
绑定到:name
参数。