백엔드/JPA
스프링 데이터 jpa 사용자 정의 ID를 사용하는경우
김어찐
2021. 10. 24. 00:36
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