250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Python
- Thymeleaf
- STS
- Open Source
- Exception
- Core Java
- ubuntu
- JavaScript
- jpa
- maven
- Eclipse
- MSSQL
- Docker
- git
- AJAX
- myBatis
- Tomcat
- MySQL
- 오픈소스
- PostgreSQL
- 문서
- JDBC
- SpringBoot
- IntelliJ
- oracle
- 설정
- error
- Spring Boot
- spring
- Source
Archives
- Today
- Total
헤르메스 LIFE
JPA @CreatedDate Column Update시 Null 되는 현상 해결방법 본문
728x90
요즘 JPA를 공부하고 있습니다. MyBatis 만 하다가, 개인적으로 공부를 진행하고 있습니다. 하다보니 막히고, 이해가 안되는 부분이 많네요. 그때마다 검색과 삽질로 해결하고 있습니다. 여기 그 삽질의 자취를 남겨봅니다.
개발환경
Spring Boot 2.7.9
H2 2.1.214
p6spy 1.8.1
slf4j 1.7.36
swagger2 2.6.1
lombok
devtools
postgresql
jpa로 개발하던 중 생성일이 초기화 되는 현상이 발생했습니다.
@Column(updatable = false)
Update 시에는 처리 되지 않는 옵션이 있었네요.
package octopus.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import lombok.Getter;
/**
* <pre>
* 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만을 제공
* abstract 클래스로 생성해야 합니다.
* </pre>
*/
@Getter
@MappedSuperclass // BaseEntity를 상속한 Entity들은 아래의 필드들을 컬럼으로 인식한다.
@EntityListeners(AuditingEntityListener.class) // Audting(자동으로 값 Mapping) 기능 추가
public abstract class BaseEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 생성자
*
* @CreatedBy // implements AuditorAware<Long>를 구현한 Class를 생성해야 한다.
*/
// private String crtId;
@Column(updatable = false)
protected String crtId = "admin";
/**
* 생성일자 : Entity가 생성되어 저장될 때 시간이 자동 저장된다.
*/
@CreatedDate
@Column(updatable = false)
private LocalDateTime crtDt;
/**
* 수정자
*
* @LastModifiedBy // implements AuditorAware<Long>를 구현한 Class를 생성해야 한다.
*/
// private String mdfId;
protected String mdfId = "admin";
/**
* 수정일자 : Entity가 생성되어 저장될 때 시간이 자동 저장된다.
*/
@LastModifiedDate
private LocalDateTime mdfDt;
}
출처 : https://wakestand.tistory.com/935
728x90
'Spring Boot Framework' 카테고리의 다른 글
[JPA] update (Persistence Context) (0) | 2023.03.18 |
---|---|
[JPA] JPA Data Save, Delete 시 Select 쿼리가 먼저 실행 된다. (1) | 2023.03.12 |
AuditingEntityListener.class (0) | 2023.03.12 |
[Spring Boot] Application.yml 설정 - SQL Script를 활용한 DB 초기화 (0) | 2023.03.05 |
[Spring Boot] Spring Data JPA에서 GroupBy 처리하기 (0) | 2023.02.26 |