Аудит (@CreatedDate) не работает с Spring Boot Cassandra - PullRequest
0 голосов
/ 23 октября 2019

У меня есть простая сущность, в которой я хочу, чтобы "createDate" назначался автоматически.

@CreatedDate
private LocalDateTime createdDate;

Как и в описанной документации , я также добавил аннотацию "@ EnableCassandraAuditing"в моем CassandraConfig:

@Configuration
@EnableCassandraRepositories
@EnableCassandraAuditing
public class CassandraConfig extends AbstractCassandraConfiguration { 

Но это по-прежнему не работает .. Объекты создаются с createDate = null. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 октября 2019

На основании документации написано:

Мы предоставляем @CreatedBy, @LastModifiedBy для захвата пользователя, который создал или изменил объект, а также @CreatedDate и @LastModifiedDate для захвата точкисо временем это произошло.

Я думаю, что последнее предложение означает capture the point in time this happened by some user. Так как у меня было то же самое issue давным-давно.

Тогда, если вы хотите @CreatedDate аннотация работает тогда нужно предоставить действующему аудитору. Следует создать свой пользовательский Auditor Aware следующим образом или просто второй пример.

Первый пример:

class SpringSecurityAuditorAware implements AuditorAware<User> {

    public Optional<User> getCurrentAuditor() {

        return Optional.ofNullable(SecurityContextHolder.getContext())
                 .map(SecurityContext::getAuthentication)
                 .filter(Authentication::isAuthenticated)
                 .map(Authentication::getPrincipal)
                 .map(User.class::cast);
    }
}

Второй пример:

class SpringSecurityAuditorAware implements AuditorAware<String> {

    public Optional<String> getCurrentAuditor() {
         return Optional.of("CurrentUser");
    }
}

ПРИМЕЧАНИЕ

Я нашел ответ, похожий на который вы можете проверить @ CreatedDate не работает, ответ

...