728x90
발단
두 테이블 간의 연결관계 설정 후 해당 테이블에 대한 조회시 발생한 오류로써 이를 해결하는 과정을 작성하였습니다.
환경
- Spring Boot 2.7.15
- Hibernate Core 5.6.15.Final
문제 환경 코드(예시)
[HHH-7668] - Hibernate JIRA
hibernate.atlassian.net
// 링크에서 참조한 예제 테이블 코드 입니다.
@Entity
@Table(name = "USERS")
public class User {
@Id
@GeneratedValue
protected Long id;
@NotNull
@Column(unique = true)
protected String customerNr;
}
@Entity
public class Item {
@Id
@GeneratedValue
protected Long id;
@NotNull
@ManyToOne
// join column 을 `User` 테이블의 PK 가 아닌 컬럼을 참조하고 있다.
@JoinColumn(name = "SELLER_CUSTOMERNR",
referencedColumnName = "CUSTOMERNR")
protected User seller;
}
- 위와 같은 경우 설명에 작성한대로 `Item` 테이블이 `User` 테이블의 PK 아닌 컬럼을 참조하여 오류가 발생합니다.
- (JoinColumn 의 프로퍼티인 referencedColumnName 으로 특정 컬럼명을 명시했음에도..)
- 오류는 Hibernate 구현체의 버그로 보이고 참조에 따르면 해결여부에 대해서는 알 수 없습니다.
해결
@Entity
public class Item implements Serializable {
...
}
- Hibernate 내부에서 오류가 발생해 Serialize 된 값을 응답하지 못하는 걸로 보입니다.
- 따라서, 자체적으로 Serializable 인터페이스를 이행하게끔 만들어줄 시 해결됩니다.
728x90