sggnology
하늘속에서IT
sggnology
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • Algorithm (31)
      • Programmers (27)
      • Baekjoon (4)
    • WIKI (4)
      • VirtualBox (1)
      • Power Toys (1)
    • NodeJS (4)
      • nvm (1)
      • React (1)
      • Vue (1)
    • Dev Language (3)
      • Java (2)
      • Kotlin (1)
    • Spring Boot (17)
      • Gradle (1)
      • JPA (3)
    • DB (4)
      • MariaDB (3)
      • Redis (0)
    • Android (6)
      • Debug (3)
    • Nginx (3)
      • Debug (1)
    • Intellij (0)
    • Network (1)
    • Git (2)
      • GitHub (2)
    • Chrome Extension (0)
    • ETC (5)
      • Monitoring (2)
    • Linux (1)
      • WSL (1)
    • Visual Studio (1)
    • Side Project (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • mariadb
  • Android Studio
  • 레벨3
  • 안드로이드 스튜디오
  • 고득점KIT
  • 백준
  • 고득점 Kit
  • 레벨2
  • 오블완
  • nginx
  • docker
  • kotlin
  • spring boot
  • JPA
  • java
  • 알고리즘
  • DB
  • 티스토리챌린지
  • 연습문제

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sggnology

하늘속에서IT

Spring Boot/JPA

[JPA] 테이블간의 연관관계 연결 실패(feat. cannot be cast to java.io.Serializable)

2024. 6. 11. 14:22
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

'Spring Boot > JPA' 카테고리의 다른 글

[JPA] hibernate bytecode enhancement 적용시 발생하는 오류 해결 (Failed to apply plugin 'org.hibernate.orm', gradle, kotlin)  (0) 2024.05.30
[JPA] 연관관계를 맺은 객체에 대해 지연 로딩이 동작하지 않는다면(feat. kotlin, hibernate, lazy-loading)  (0) 2023.11.09
    'Spring Boot/JPA' 카테고리의 다른 글
    • [JPA] hibernate bytecode enhancement 적용시 발생하는 오류 해결 (Failed to apply plugin 'org.hibernate.orm', gradle, kotlin)
    • [JPA] 연관관계를 맺은 객체에 대해 지연 로딩이 동작하지 않는다면(feat. kotlin, hibernate, lazy-loading)
    sggnology
    sggnology
    하늘은 파란색이니까 내 삶도 파란색이길 ㅎㅎ

    티스토리툴바