У меня проблемы с настройкой аудита для коллекций MongoDb, когда у меня несколько подключений к базе данных. Я получаю сообщения об ошибках типа:
java.lang.IllegalArgumentException: Couldn't find PersistentEntity for type class com.example.hateoasapi.domain.Post!
Я знаю, что были заданы похожие вопросы - я ответил на следующие вопросы, чтобы получить ответы:
Ошибка аудита Spring boot mongodb
Не удалось найти PersistentEntity для класса типов при использовании @ EnableMongoAuditing (сюда входят ссылки на другие места, которые я просматривал)
Примечание. Аудит может работать, когда У меня только одно соединение с базой данных. Я также могу получить несколько соединений с базой данных, работающих без аудита. Это комбинация из двух, я не могу работать.
Я не расширяю AbstractMongoConfiguration для своих классов конфигурации. У меня есть подклассы, которые обеспечивают уникальность имени MongoTemplate для каждого источника данных. Базовый класс и пример родительского класса следующие (это довольно просто):
@Configuration
@ConfigurationProperties("datasource.auth.mongodb")
@EnableMongoRepositories(basePackages = {"com.example.model"},
mongoTemplateRef = "authMongoTemplate")
public class AuthMongoConfig extends AbstractMongoConfig {
@Bean(name = "authMongoTemplate")
@Override
public MongoTemplate getMongoTemplate() {
return super.getMongoTemplate();
}
}
public abstract class AbstractMongoConfig {
private String uri;
protected MongoTemplate getMongoTemplate() {
MongoDbFactory mongoDbFactory = new SimpleMongoClientDbFactory(uri);
return new MongoTemplate(mongoDbFactory);
}
}
Одна вещь, которую я попробовал, упоминалась выше в одной из ссылок - создание MongoTemplate с MappingMongoConverter, Аналогично этому:
@Bean
publicMongoTemplate getMongoTemplate(MappingMongoConverter mappingMongoConverter ) {
MongoDbFactory mongoDbFactory = new SimpleMongoClientDbFactory(uri);
return new MongoTemplate(mongoDbFactory, mappingMongoConverter );
}
Однако, когда я делаю это, мое приложение создает все коллекции для всех баз данных - все равно, что сущности объединяются где-то, а не находятся в разных база данных. Я думаю, что где-то в MappingMongoConverter (или ниже) мои документы Mon go не принимаются.
Есть идеи? Немного расстраивает возможность заставить работать обе части, но не обе вместе.
Я использую Spring Boot 2.1.12 и эквивалентный модуль Spring Data.