У меня есть следующие четыре таблицы:
SCHEDULE_REQUEST TABLE:
Я БЫ,
APPLICATION_ID (FK)
ТАБЛИЦА ЗАЯВКИ:
Я БЫ,
CODE
USER_APPLICATION TABLE:
APPLICATION_ID (FK),
USER_ID (FK)
ТАБЛИЦА ПОЛЬЗОВАТЕЛЯ:
Я БЫ,
ИМЯ
Теперь я хотел создать CriteriaBuilder
, где условием является выбор ScheduleRequests
для указанных идентификаторов пользователей.
У меня есть следующие коды:
List<User> usersList = getSelectedUsers(); // userList contains users I wanted to select
CriteriaBuilder builder = getJpaTemplate().getEntityManagerFactory().getCriteriaBuilder();
CriteriaQuery<ScheduleRequest> criteria = builder.createQuery(ScheduleRequest.class);
Root<ScheduleRequest> scheduleRequest = criteria.from(ScheduleRequest.class);
criteria = criteria.select(scheduleRequest);
ParameterExpression<User> usersIdsParam = null;
if (usersList != null) {
usersIdsParam = builder.parameter(User.class);
params.add(builder.equal(scheduleRequest.get("application.userApplications.user"), usersIdsParam));
}
criteria = criteria.where(params.toArray(new Predicate[0]));
TypedQuery<ScheduleRequest> query = getJpaTemplate().getEntityManagerFactory().createEntityManager().createQuery(criteria);
// Compile Time Error here:
// The method setParameter(Parameter<T>, T) in the type TypedQuery<ScheduleRequest> is not
// applicable for the arguments (ParameterExpression<User>, List<User>)
query.setParameter(usersIdsParam, usersList);
return query.getResultList();
Не могли бы вы помочь мне, как передать фильтр запроса в объект отношения?
Я думаю, что я сделал в "application.userApplications.user" неправильно?
Пожалуйста, действительно нужна помощь.
Заранее спасибо!