jpa specification는 검색 조건을 조합해서 검색하기 때문에 applicants를 따로 쿼리를 사용해서 가져오더라도 조건에서 post-applicants를 접근하기 어렵다고 생각해서 서브쿼리를 사용했습니다. 더 좋은 방법이 있다면 말씀해 주세요.
실행되는 쿼리
select
p1_0.id,
p1_0.content,
p1_0.created_at,
d1_0.id,
c1_0.id,
c2_0.id,
c2_0.name,
c1_0.name,
d1_0.name,
d1_0.statutory_code,
p1_0.due_time,
p1_0.edited_at,
p1_0.is_close,
p1_0.start_time,
p1_0.title,
p1_0.user_id,
p1_0.view_count
from
post_tb p1_0
left join
district_tb d1_0
on d1_0.id=p1_0.district_id
left join
country_tb c1_0
on c1_0.id=d1_0.country_id
left join
city_tb c2_0
on c2_0.id=c1_0.city_id
where
(
p1_0.user_id=?
or p1_0.id in ((select
a1_0.post_id
from
applicant_tb a1_0
join
post_tb p2_0
on p2_0.id=a1_0.post_id
where
a1_0.status
and a1_0.user_id=?))
and p1_0.user_id!=?
)
and 1=1
and 1=1
and p1_0.start_time>=?
order by
p1_0.id desc offset ? rows fetch first ? rows only
Summary
Description
jpa specification는 검색 조건을 조합해서 검색하기 때문에 applicants를 따로 쿼리를 사용해서 가져오더라도 조건에서 post-applicants를 접근하기 어렵다고 생각해서 서브쿼리를 사용했습니다. 더 좋은 방법이 있다면 말씀해 주세요.
실행되는 쿼리
select p1_0.id, p1_0.content, p1_0.created_at, d1_0.id, c1_0.id, c2_0.id, c2_0.name, c1_0.name, d1_0.name, d1_0.statutory_code, p1_0.due_time, p1_0.edited_at, p1_0.is_close, p1_0.start_time, p1_0.title, p1_0.user_id, p1_0.view_count from post_tb p1_0 left join district_tb d1_0 on d1_0.id=p1_0.district_id left join country_tb c1_0 on c1_0.id=d1_0.country_id left join city_tb c2_0 on c2_0.id=c1_0.city_id where ( p1_0.user_id=? or p1_0.id in ((select a1_0.post_id from applicant_tb a1_0 join post_tb p2_0 on p2_0.id=a1_0.post_id where a1_0.status and a1_0.user_id=?)) and p1_0.user_id!=? ) and 1=1 and 1=1 and p1_0.start_time>=? order by p1_0.id desc offset ? rows fetch first ? rows onlyRelated Issue
Issue Number: close #65 Issue Number: #66