Spring Boot

Spring Boot] org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save()

2023. 7. 15. 01:42
목차
  1. 소스 코드
  2. Entity
  3. Service
  4. ServiceTest
  5. 해결 방법
  6. Service 코드에 아래 한 줄을 추가함
  7. 참고 링크
반응형

ServiceTest에서 테스트 코드를 작성한 뒤 실행하였는데, 아래와 같은 오류가 발생하였다.

더보기

org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save()

 

소스 코드

Entity

  • Primary Key 매핑 방식을, 직접 할당을 사용
@Getter
@NoArgsConstructor
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "chat_room")
public class Room {

    @Id
    @Column(name = "room_id", unique = true, nullable = false, length = 255)
    private String roomId;
    
    // ...

 

Service

public int createRoom(RoomDto roomDto) {
    // Dto -> Entity
    Room room = roomDto.toRoom();

    // save db
    try {
        roomRepository.save(room);
    } catch (Exception e) {
        log.error("e ", e);
        return HttpStatus.INTERNAL_SERVER_ERROR.value();
    }

    return HttpStatus.CREATED.value();
}

 

ServiceTest

  • 아래 코드를 실행하였을 때, 오류 발생함
@Test
@DisplayName("방 생성이 정상적으로 완료되면, status 201 값이 리턴된다.")
void createRoom() {
    RoomDto roomDto = new RoomDto("testroom1", "testmentee1", "testmentor1");

    int success = roomService.createRoom(roomDto);
    assertThat(success).isEqualTo(HttpStatus.CREATED.value());
}

 

 

해결 방법

Service 코드에 아래 한 줄을 추가함

 public int createRoom(RoomDto roomDto) {
    // Dto -> Entity
    Room room = roomDto.toRoom();

    // save db
    try {
        room.setRoomId(roomDto.getRoomId()); // Assign a value to the ID field manually
        roomRepository.save(room);
    } catch (Exception e) {
        log.error("e ", e);
        return HttpStatus.INTERNAL_SERVER_ERROR.value();
    }

    return HttpStatus.CREATED.value();
}

 

 

 

참고 링크

  1. 4.6 기본 키 매핑 https://ultrakain.gitbooks.io/jpa/content/chapter4/chapter4.6.html
  2. [오류]IdentifierGenerationException https://velog.io/@tool0923/오류IdentifierGenerationException
  3. 테스트

 

반응형

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

Spring Boot] ResponseEntity vs Custom DTO  (0) 2023.07.15
Spring Boot] 채팅 시스템 설계  (0) 2023.07.11
Spring Boot] java.lang.IllegalArgumentException: Key argument cannot be null  (0) 2023.07.08
Spring Boot] NCP Chatbot과 연동하기-기초  (0) 2023.07.06
Spring Boot] JWT 토큰을 사용한 사용자 인증/인가  (0) 2023.07.03
  1. 소스 코드
  2. Entity
  3. Service
  4. ServiceTest
  5. 해결 방법
  6. Service 코드에 아래 한 줄을 추가함
  7. 참고 링크
'Spring Boot' 카테고리의 다른 글
  • Spring Boot] ResponseEntity vs Custom DTO
  • Spring Boot] 채팅 시스템 설계
  • Spring Boot] java.lang.IllegalArgumentException: Key argument cannot be null
  • Spring Boot] NCP Chatbot과 연동하기-기초
나른한 찰리
나른한 찰리
반응형
나른한 찰리
Moojun's Storage
나른한 찰리
전체
오늘
어제
  • 분류 전체보기 (83)
    • 포트폴리오 스프링 부트 프로젝트 (1)
    • 멘질멘질] 2023 졸업 프로젝트 (16)
    • 학부연구생 (5)
    • Spring Boot (17)
      • Test Code (10)
    • Amazon Web Services(AWS) (3)
    • Ubuntu Server (1)
    • RDB (6)
    • git (1)
    • 오류 (9)
    • MacOS (4)
    • python library (5)
    • 기타 (8)
    • 프로그래밍 도서 (4)
      • 클린 코드(로버트 마틴) (4)
    • 코딩 테스트 (3)
      • 프로그래머스 (3)
    • 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우분투#ubuntu#mysql#mysql설치#mysql오류
  • pandas#dataframe

최근 댓글

최근 글

hELLO · Designed By 정상우.
내 관리 화면으로 이동
나른한 찰리
Spring Boot] org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save()
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.