У меня есть 2 таблицы product
и product_state
. В таблице product_state
хранятся все изменения состояния продукта.
Я хочу выбрать продукты с заданным состоянием (выбранные пользователем в пользовательском интерфейсе) с помощью API Criteria. Поэтому мне нужно объединить записи product
с самой последней связанной записью product_state
.
В простом SQL я использую это:
select p.*
from product as p
left join (select *
from product_state ps
where ps.id = (select max(id)
from product_state ps2
where ps2.product_id = ps.product_id)
) as latest_product_state on latest_product_state.product_id = p.id;
Во всех других простых случаях я использую Criteria API для пользовательской фильтрации. Однако в этом случае я понятия не имею, как начать.