Can you please help me how to convert the following codes to using \"in\" operator of criteria builder? I need to filter by using list/array of usernames using \"in\".
If I understand well, you want to Join ScheduleRequest with User and apply the in clause to the userName property of the entity User.
I'd need to work a bit on this schema. But you can try with this trick, that is much more readable than the code you posted, and avoids the Join part (because it handles the Join logic outside the Criteria Query).
List myList = new ArrayList ();
for (User u : usersList) {
myList.add(u.getUsername());
}
Expression exp = scheduleRequest.get("createdBy");
Predicate predicate = exp.in(myList);
criteria.where(predicate);
In order to write more type-safe code you could also use Metamodel by replacing this line:
Expression exp = scheduleRequest.get("createdBy");
with this:
Expression exp = scheduleRequest.get(ScheduleRequest_.createdBy);
If it works, then you may try to add the Join logic into the Criteria Query. But right now I can't test it, so I prefer to see if somebody else wants to try.