작성
·
378
0
안녕하세요, 스프링 데이터 JPA 관련 강의들을 잘 듣고 있습니다. (다 보았지만 다시 볼 예정입니다 ㅎㅎ..)
@PreUpdate 관련하여 기대한 바와 다른 동작이 확인되어 문의드립니다.
Audit 관련 정보를 기록하려 하고, 이때 Listener 를 사용하지 않고 등록일/등록자 를 저장하고자 합니다.
Board 게시판은 MyAudit 클래스를 상속하고 있으며, MyAudit은 userId라는 @Transient 가 적용된 필드를 가지고 있습니다.
@PrePersist
public void prePersist() {
creator = userId; // userId는 preUpdate가 속해있는 class field 로써 @Transient 적용
createAt = LocalDateTime.now();
modifier = userId; // userId는 preUpdate가 속해있는 class field 로써 @Transient 적용
updateAt = LocalDateTime.now();
}
@PreUpdate
public void preUpdate() {
modifier = userId; // userId는 preUpdate가 속해있는 class field 로써 @Transient 적용
updateAt = LocalDateTime.now();
}
PrePersist는 의도한 바처럼 Transient 필드 값을 가지고 저장하나, preUpdate의 경우 modifier에 null이 대입이 됩니다.
Listener를 쓴다면 해결이 되겠지만 @PreUpdate에서 Transient 필드가 왜 null이 되는지 궁금합니다. 그리고 의도한 바처럼 Transient 필드의 값을 PreUpdate 시점에 가져와서 대입이 가능할지 문의드립니다.
답변 1
0
안녕하세요. Jean님
도움을 드리고 싶은데, 이런 상황은 사실 코드로 돌려봐야 찾을 수 있어서요.
같은 상황을 재현할 수 있는 동작하는 테스트 코드를 보내주세요^^ 전체 프로젝트를 압축해서 올려주세요
감사합니다.