https://velog.io/@smc9919/querydsl-ElementCollection-트러블-슈팅

@ElementCollection 문제

  1. JPA가 변경 감지를 못한다. → Dirty Checking 기능을 사용하지 못한다.
  2. QueryDSL을 사용할 때 검색이나 Join을 유동적으로 사용할 수 없다.
    1. @ElementCollection 필드는 기본적으로 Entity가 아니라 고정된 Value 값을 List로 특정 엔티티에 종속 시켜 직관적으로 DB를 설계할 수 있다는 장점을 가진다.

    2. 하지만 join이나 fetch join이 안되는 문제가 있다.

      queryDSL이 SELECT문 실행 시, @ElementCollection 필드에 대한 join을 자동으로 해주게 된다. 하지만, left join이나 fetch join 등 join에 대한 상세한 설정이 불가하다.

      그렇기 때문에 자연스럽게 N+1 문제가 발생하게 된다.