• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@Embeddable 관련질문

22.01.21 22:47 작성 조회수 204

0

안녕하세요 질문이 있습니다.

기존 존재하는 컬럼을 변경하면 안되는 DB에 접속해서 사용을 하고 있습니다. 

team-member 일대다 관계이고 team 정보를 가져올때 member정보를 리스트로 가져오려고 합니다.

@Entity
public class team {
@JoinColumn(name = "team_id")
private List<member> members;
}

DTO를 따로 선언해서 가져옵니다.

QueryResults<TeamResponse> results = queryFactory
.select(new QTeamResponse(
team.members
))
.from(team)

그런데 에러가 발생하였습니다.

nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: not an entity
 

위의 에러가 떠서 확인을 하였더니 member 클래스가 @Embeddable입니다. 이 문제때문에 위 에러가 발생하는것 같습니다. @Entity로 선언하자니 PK가 있어야한다는데 변경할수는 없고

어떻게 해야 리스트를 가져올수 있을가요? 리스트를 제외했더니 에러없어 잘 가져오는걸 보니 리스트 문제가 맞습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 빈센트님

우선 Member 클래스는 @Embeddable이면 안되고, 엔티티여야 합니다.

그리고 JPA에서는 (Querydsl 포함) from절은 항상 엔티티로 시작해야 합니다. Embeddable은 엔티티의 대상이 될 수 없습니다.

감사합니다.