我有2个表product
和product_state
。 product_state
表存储产品的每个状态更改。
我想使用Criteria API选择具有给定状态(由用户在UI上选择)的产品。因此,我需要将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进行用户触发的过滤。但是在这种情况下,我不知道如何开始。