@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。
我在实体 属性 上使用了 @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。