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
'백엔드 > JPA' 카테고리의 다른 글
QueryDsl, data jpa 하나의 레포지토리 사용 (0) | 2022.03.10 |
---|---|
JPA Auditing으로 생성일/수정일 자동화하기 (0) | 2021.12.29 |
스프링 데이터 jpa Auditing (0) | 2021.10.23 |
스프링 데이터 jpa 사용자 정의 repository 구현 (0) | 2021.10.23 |
스프링 데이터 jpa 패치조인 @EntityGraph (0) | 2021.10.23 |