@Query("SELECT DISTINCT h from Habit h join fetch h.habitChecker hc WHERE h.userId= :userId and hc.createdAt between :startDate and :endDate")
List<Habit> findAllByUserIdAndCreatedAtBetween(@Param("userId") Long userId,
@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate);
๐ก Feature Issue
ํ์ฌ ์ ํฌ์ ๋ก์ง์ ์ฑ๋ฆฐ์ง ์์ฑํ๊ณ ์ฌ์ฉ์๊ฐ ํด๋น ์ฑ๋ฆฐ์ง ์ฑ๊ณต ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฒด์ปค๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ ์ฑ๊ณต ์ฌ๋ถ, ๋ ์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ํน์ ๊ธฐ๊ฐ์ ์ฑ๋ฆฐ์ง๋ฅผ ์กฐํํ ๋ ๋ฐ์ํฉ๋๋ค.
๋ค์์ฒ๋ผ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฐ๋ค๊ณ ํ์ ๋ ๋ง์ฝ ์ฒด์ปค๊ฐ ์๋ค๋ฉด? ๊ฐ์ ธ์ค์ง ๋ชปํ๊ฒ๋ฉ๋๋ค. ๋ถ๋ช ํด๋น ์ฑ๋ฆฐ์ง๊ฐ ์์ฑ๋์๋๋ฐ๋ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ ํฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ์ฟผ๋ฆฌ ๋ ๊ฐ๋ก ๋๋์ด left outer join, inner join์ผ๋ก ๊ฐ๊ฐ ๋๋์ด ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์ข์๋ณด์ ๋๋ค. left outer join์ ๊ฒฝ์ฐ ์ฒด์ปค๋ฅผ ๋๋ฅด์ง ์์์ง๋ง ์ญ์ ๋์ง ์์ ์ฆ active์ธ ์ฑ๋ฆฐ์ง๋ฅผ ๊ฐ์ ธ์ค๊ฒ ์ฒ๋ฆฌํ๋ฉฐ inner join์ ์์์ ๋ง๋ ์ฟผ๋ฆฌ๋ก ๋์ํ๊ฒ ๋ง๋ค๋ฉด ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๐ฟ To-do