Spring Boot - включить аудит JPA только для одного из двух источников данных - PullRequest
1 голос
/ 16 января 2020

У меня есть два источника данных (MySQL и Elasticsearch), настроенных в проекте Spring Boot 2.0.2.RELEASE, и JpaAuditing включены:

@Configuration
@EnableJpaAuditing(auditorAwareRef = "springSecurityAuditorAware")
@EnableJpaRepositories("com.example.companies.repository")
@EnableElasticsearchRepositories("com.example.companies.repository.search")
public class DatabaseConfiguration {
}

И у меня есть объект, который я храню в обоих данных источники:

@MappedSuperclass
@EntityListeners({AuditingEntityListener.class})
public abstract class AbstractAuditingEntity implements Serializable {

    @CreatedBy
    private String createdBy;

    @CreatedDate
    private Instant createdDate = Instant.now();

    @LastModifiedBy
    private String lastModifiedBy;

    @LastModifiedDate
    private Instant lastModifiedDate = Instant.now();
}

@Entity
@Table(name = "company")
@Document(indexName = "company")
public class Company extends AbstractAuditingEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
}

В Elasticsearch мне нужно иметь точную копию сущности в MySQL (в том числе с одинаковыми createdDate и lastModifiedDate):

public Company save(Company company) {
    // MySql repository
    Company result = companyRepository.save(company);
    // Elasticsearch repository
    companySearchRepository.save(result);
    return result;
}

При создании сущность имеет одинаковые данные в обоих репозиториях, но при обновлении lastModifiedDate получает другое значение во втором репозитории.

Существует ли простой способ включить аудит только для одной из двух данных источники?

Спасибо.

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