에러 일기

Unable to locate Attribute with the the given name [id] on this ManagedType

재원쓰 2023. 2. 12. 12:34

 



스프링데이터 JPA 레포지토리에 메서드를 추가해주다가 에러가 발생했다.

User_Id로 조회해올 수가 없는 것이다.

 

이유가 무엇일까 생각해보았다.

User <-> NoticeBoard 테이블의 연관관계는 현재 NoticeBoard쪽에서만 @ManyToOne으로 단방향이다.

NoticeBoard는 User 필드를 가지고 있는데, @JoinColumn(name="user_id")를 선언해주면 mapped 어쩌구 에러를 일으켜서 해주지 않았다. 아마도 User 엔티티에서도 @OneToMany를 걸어주었을 때만 쓰는 것 같은데, 이걸 안했으니 그런 것 같다.

근데 Repository에서 findBy---User_Id를 쓰려면 @JoinColumn(name="user_id")를 해줘야 하는 것 같다. 

즉, 양방향 연관관계일 때만 가능하다는 뜻이다.

확실하진 않지만 그래서 느슨한 연관관계로 풀어주는 것 같다.