Мне нужна небольшая помощь в настройке моего запроса. Я не хочу делать несколько выборок, чтобы сформировать в основном один и тот же подзапрос, если я могу его избежать. В ореховой оболочке у меня есть объекты, называемые TimeSlot
, которые используются для отслеживания нескольких деталей. Эти TimeSlot
- это товары, которые оплачиваются. Когда его время для TimeSlot
для отправки на возмещение, они используются для создания PayableTimeSlot
. Прежде чем TimeSlot
может быть оплачен, мне нужно убедиться, что он еще не был оплачен.JPA, избегая нескольких подзапросов
Как сидит следующее мой запрос:
@NamedQuery(
name = "TimeSlot.by.person.academy.id.by.contract.date",
query = "select distinct ts
from TimeSlot ts
join ts.invitedInstructors ii
join ts.academyClass ac
join ac.academy a
where ii.person.id = ?
and a.id = ?
and ts.schedule.startDateTime BETWEEN ? AND ?
and ts.id not in (select e.id from PayableTimeslot pts join pts.event e)
and ? not in (select e.claimant from PayableTimeslot pts join pts.event e)")
Как вы видите, я уже выбрать элемент из PayableTimeSot для первого not in
. Есть ли способ расширить подзапрос в: (select e.id, e.claimant from PayableTimeslot pts join pts.event e)
Я просто не уверен, как проверить для нескольких элементов not in
подзапрос. Во что бы то ни стало, если есть лучшая атака проблемы, чем то, как я это делаю, дайте мне знать.
Если вы все не считаете, что множественные выборы не будут большой сделкой ... В таблице будет в среднем 30-50 записей в неделю с каждой копируемой копией (для контрольного журнала) в 7-9 раз ,