QueryDSL версии 4.1.4 - в настоящий момент обновление невозможно
Как лучше всего сравнить, если часть времени Date находится между двумя значениями LocalTime с QueryDSL?
Декларация:
private java.time.LocalTime.LocalTime beginTime; -> TIME in postgresql
private java.time.LocalTime.LocalTime endTime; -> TIME in postgresql
private java.util.Date calltime; -> TIMESTAMP in postgresql
Выражения:
TimeExpression<Date> calltimeTimePath = Expressions.asTime(qTicket.calltime);
TimePath<LocalTime> beginTimePath = qCallCenterTimeslot.beginTime;
TimePath<LocalTime> endTimePath = qCallCenterTimeslot.endTime;
Предикат:
.where(calltimeTimePath.between(beginTimePath, endTimePath));
Исключение: не удается разрешить метод 'между (com.querydsl.core.type.dsl.TimePath, com.querydsl.core.type.dsl.TimePath)'
Рабочий пример:
TimeExpression<LocalTime> testTimeExpression = Expressions.asTime(test);
.where(testTimeExpression.between(beginTimeExpression, endTimeExpression))
Так что, возможно, лучшим способом было бы преобразование TimeExpression из Date в TimeExpression из LocalTime. Но я понятия не имею, как этого добиться?
В postgresql я могу просто сделать:
SELECT t.calltime::TIME, *
FROM ticket t
INNER JOIN call_center_timeslot c
ON c.id=218
AND t.calltime::TIME BETWEEN c.begin_time AND c.end_time;
Есть мысли, как лучше всего это решить?