使用规范的元模型和几个联接,它应该可以工作。尝试从以下伪代码中获得一些提示(未经测试):
...Predicate predicate = cb.disjunction();if (usersList != null) { ListJoin<ScheduleRequest, Application> applications = scheduleRequest.join(ScheduleRequest_.applications); ListJoin<Application, UserApplication> userApplications = applications.join(Application_.userApplications); Join<UserApplication, User> user = userApplications.join(UserApplication_.userId); for (String userName : usersList) { predicate = builder.or(predicate, builder.equal(user.get(User_.name), userName)); }}criteria.where(predicate); ...- 为了理解“标准查询”,请看一下这些教程:http
- //www.ibm.com/developerworks/java/library/j-typesafejpa/
http://docs.oracle.com/javaee/6/tutorial/
doc / gjitv.html
第二个链接还应指导您如何使用元模型类,该类应由编译器/ IDE自动构建。



