web-dev-qa-db-ja.com

@CreatedByはSpringData JPAでどのように機能しますか?

エンティティプロパティで@CreatedDateを使用しましたが、dbに日付が挿入されていることがわかります。 Spring DataJPAの@CreatedByアノテーションの目的がわかりません。

リファレンスドキュメント で私は読んだ:

エンティティを作成または変更したユーザーをキャプチャするために、@CreatedBy@LastModifiedByを提供します

しかし、そのようなユーザーを作成して使用するにはどうすればよいですか?

11

すでにリファレンスドキュメントにアクセスしている場合は、 あと2段落 を読んで、AuditorAwareの使用方法を確認することをお勧めします。 :)

18
Oliver Drotbohm

tL; DRの場合

あなたのエンティティ

@CreatedBy
private UUID modifyBy;

およびSecurityAuditorAware

@Component
public class SecurityAuditorAware implements AuditorAware<UUID> {

    @Override
    public Optional<UUID> getCurrentAuditor() {

        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

        if (authentication == null || !authentication.isAuthenticated()) {
            return Optional.empty();
        }

        return Optional.of(((MyCustomUser) authentication.getPrincipal()).getId());
    }
}

注:同じデータ型を使用する必要があります。カスタムユーザーIDとしてUUIDを使用します。

5
user1686407