join fetch ์—๋Ÿฌ

greenTeaยท2023๋…„ 3์›” 29์ผ

join fetch error

๐Ÿ˜ฐspring data jpa๋กœ ๊ณต๋ถ€ํ•˜๋˜์ค‘ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์งœ๊ณ  ๋Œ๋ ค ๋ณด์•˜๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.

public interface UserRepository extends JpaRepository<User, Long> {

    @Query("select  distinct u.questions from User u join fetch u.questions where u.id = :userid")
    List<Question> findQuestionsWith(@Param("userid") Long userid);
}

error

org.springframework.beans.factory.UnsatisfiedDependencyException
.....
Validation failed for query for method public abstract java.util.List project.blog.repository.UserRepository....!

๋นˆ ์ƒ์„ฑ๋ถ€ํ„ฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๋ญ๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ์‹ถ์—ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด UserRepository์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค๊ณ  ํ•˜๊ธธ๋ž˜ ์‚ดํŽด๋ณด์•˜๋‹ค.

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด user์™€ Question์€ @OneToMany ๊ด€๊ณ„์ด๊ธฐ์— ์ปฌ๋ ‰์…˜ ํŒจ์น˜๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.

๐Ÿซก๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” join fetch์ ˆ์—์„œ ๊ฐ€์ ธ์˜จ ์ปฌ๋ ‰์…˜์„ select์ ˆ์—์„œ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์—†๋Š”๋ฐ ๋‚˜๋Š” ๊ณ„์† ์ปฌ๋ ‰์…˜์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

// ์—๋Ÿฌ ๋ฐœ์ƒ
List<Question> questions = em.createQuery("select u.questions from User u join fetch u.questions where u.id = :userid", Question.class).getResultList();

// ์ •์ƒ ์ž‘๋™
List<User> users = em.createQuery("select u from User u join fetch u.questions where u.id = :userid", User.class).getResultList();

๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝ ํ•ด ์ฃผ๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋‹ค.

@Query("select  distinct u from User u join fetch u.questions where u.id = :userid")
    User findQuestionsWithId(@Param("userid") Long userid);
profile
greenTea์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€