@CreatedBy如何在Spring Data JPA中运行?

时间:2015-04-06 14:08:25

标签: java spring jpa spring-data spring-data-jpa

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

我在reference documentation读到:

  

我们提供@CreatedBy@LastModifiedBy来捕获创建或修改实体的用户

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

2 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:2)

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。