У меня есть два источника данных (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
получает другое значение во втором репозитории.
Существует ли простой способ включить аудит только для одной из двух данных источники?
Спасибо.