Я хочу создать запрос, который ищет даты для разных объектов. Моя структура:
Если у сотрудника есть контракт, я хочу получить дата контракта. Если у сотрудника нет контракта, я хочу вернуть дату сотрудника.
Пока мой код таков:
if (inputDate!= null) {
ParameterExpression<Date> exp = criteriaBuilder.parameter(Date.class, "inputDate");
criteria.add(criteriaBuilder.or(
criteriaBuilder.isNull(employee.get("contract")),
criteriaBuilder.lessThanOrEqualTo(employee.<Date>get("creationDate"), exp), criteriaBuilder.lessThanOrEqualTo((employee.join("contract").<Date>get("fromDate")), exp) ));}
Это, похоже, не работает. Кажется, я всегда захожу в isNull, чего не ожидаю.
Я рад изучить это еще немного, но я думаю, что мой вопрос заключается в том, является ли это правильным способом сделать это. Это? Я также видел selectCase в критерииBuilder, так что, возможно, это может быть лучшим решением.
Любые указатели будут приняты с благодарностью.
Спасибо