Не удалось найти класс типа PersistentEntity fpr при использовании @EnableMongoAuditing с несколькими подключениями к БД - PullRequest
0 голосов
/ 06 марта 2020

У меня проблемы с настройкой аудита для коллекций 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.

...