@CreatedBy 如何在 Spring Data JPA 中工作?

How does @CreatedBy work in Spring Data JPA?

我在实体 属性 上使用了 @CreatedDate,我看到它将日期插入到数据库中。我不明白 Spring Data JPA 中 @CreatedBy 注释的目的是什么。

reference documentation 我读到:

We provide @CreatedBy, @LastModifiedBy to capture the user who created or modified the entity

但是如何创建和使用这样的用户?

如果您已经阅读了参考文档,我建议您阅读 two more paragraphs 以了解 AuditorAware 以及如何使用它。 :)

对于 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());
    }
}

注意: 您需要使用相同的数据类型,我使用 UUID 作为我的自定义用户 ID。