• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@PreUpdate 시 @Transient 필드 null 로 대입되는 현상 관련 문의

20.09.16 17:12 작성 조회수 210

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님

도움을 드리고 싶은데, 이런 상황은 사실 코드로 돌려봐야 찾을 수 있어서요.

같은 상황을 재현할 수 있는 동작하는 테스트 코드를 보내주세요^^ (메일에 설명은 자세히 부탁드려요^^)

zipkyh@naver.com

감사합니다.