• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문 join

23.02.21 23:14 작성 23.02.21 23:18 수정 조회수 240

0

@Entity
public class board {

    @Id @GeneratedValue
    @Column(name = "bno")
    private Long id;
    private String filename;
}


file에서 board를 join했습니다.


    @Query("select f from file f join fetch f.board on f.board =: bno")
    List<file> findByBno(@Param("bno") int bno);
}

이부분에서 int로 board.getId 로 넘겨서 위와같이 join을 하고 싶은데 안됩니다

board의 pk값을 file에서 where을 걸었는데 안됩니다.

오류 :Caused by: java.lang.IllegalArgumentException

답변 1

답변을 작성해보세요.

0

y2gcoder님의 프로필

y2gcoder

2023.02.22

안녕하세요, jacomyou 님. 공식 서포터즈 y2gcoder 입니다.

제가 요구사항과 작성하신 설계 구조를 정확하게 파악한 것은 아닌 상태에서 조심스럽게 추측해보자면,

file 엔티티에서 board 를 매핑할 때 아마 pk가 아닌 Board 엔티티로 매핑하셨을 것 같습니다. 그러면

JPQL을

select f from file f join fetch f.board on f.board =: bno

에서

select f from file f join fetch f.board on f.board.id =: bno

와 같은 형식으로 바꿔주시면 될 것 같다는 생각이 듭니다.

별개로 하나만 조심스럽게 제안을 드리자면

file 클래스명을 File로 바꿔주시면 더 편안할 것 같습니다 :)



감사합니다.