Search code examples
javaspringspring-bootquerydsl

How to use IN contains ignore case in QuerydslPredicateExecutor?


What I trying to achieve is using IN query which is ignore uppercase or lower case in my QuerydslPredicateExecutor, but I can't find the function and any docs about it. Here is what I do:

List<String> statusList = new ArrayList<String>();
statusList.add("ASSIGNED");
statusList.add("Got Permit");

QTransStuffing qTransStuffing = QTransStuffing.transStuffing;
BooleanExpression isCanceledFalse = qTransStuffing.cancelStuffing.eq(false);
BooleanExpression eStatusList = qTransStuffing.status.in(statusList);
Predicate predicate = isCanceledFalse.and(eStatusList);

transStuffingRepository.findAll(predicate)

As you can see, if we do query qTransStuffing.status.in(statusList) this won't ignore case, how can I achieve IN query with ignore case?


Solution

  • There isn't really a better way than:

    List<String> statusList = new ArrayList<String>();
    statusList.add("ASSIGNED");
    statusList.add("GOT PERMIT");
    
    QTransStuffing qTransStuffing = QTransStuffing.transStuffing;
    BooleanExpression isCanceledFalse = qTransStuffing.cancelStuffing.eq(false);
    BooleanExpression eStatusList = qTransStuffing.status.upperCase().in(statusList);
    Predicate predicate = isCanceledFalse.and(eStatusList);
    
    transStuffingRepository.findAll(predicate)