본문 바로가기
백엔드/JPA

스프링 데이터 jpa 사용자 정의 ID를 사용하는경우

by 김어찐 2021. 10. 24.
728x90

@GeneratedValue 를 사용하지 않는경우 사용자 정의 id를 사용하는경우 스프링데이터 jpa에서는 save() 작업을 하는경우 merge가 발생하므로 따로 설정해줘야한다.

 

Persisteable<> 인터페이스를 구현해야한다.

package com.study.datajpa.entity;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.domain.Persistable;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.time.LocalDateTime;

@Entity
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Item implements Persistable<String> {

    @Id
    private String id;

    @CreatedDate
    private LocalDateTime createDate;

    public Item(String id){
        this.id = id;
    }

    @Override
    public String getId() {
        return id;
    }

    @Override
    public boolean isNew() {
        return createDate==null;
    }
}
728x90