@LastModifiedBy и @LastModifiedDate не работают для встроенного объекта - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь использовать аннотации @LastModifiedDate и @LastModifiedBy для аудита моих записей в MongoDB.

Здесь моя модель

    @Document(collection = "A")
    class A{
    @LastModifiedBy
    private String lastModifiedUser;
    @LastModifiedDate
    private Instant lastModifiedDate;
    private List<B> listB;
    }

    class B{
    @LastModifiedBy
    private String lastModifiedUser;
    @LastModifiedDate
    private Instant lastModifiedDate;
    }

Service1.class
public class Service1 {
 public void saveA(A a) {
      repository.save(a)
      }
 }

Работает нормально для class A, но не работает со встроенным class B.

Любая помощь будет признательна.

используя 2.1.10- Spring Data Mongo and for Springboot 2.1.8.Release

1 Ответ

1 голос
/ 28 января 2020

на вашем посте не так много, чтобы понять поведение окончательного решения, к которому вы стремитесь ... поэтому я буду стараться изо всех сил:)

на день написания этого поста, У Spring есть известная проблема с проверкой встраиваемого документа, как указано здесь , поэтому вам придется переопределить интерфейс audit своим собственным логином c для установки и изменения lastModifiedUser и lastModifiedDate поля, это возможно, но не так просто и может привести к нежелательному поведению функциональности spring-data в вашем проекте

или

, вы можете принудительно изменить все B с помощью пользовательский метод, поэтому каждая модификация List<B> будет запускать «проверку изменений» (это не касается каких-либо возможностей spring-data)

будет другой подход (мое предложение)

use B в качестве отдельного документа и сохраните в A список ссылок b, используя @DBRef

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...