Как я могу узнать местонахождение моих пакетов, содержащих сущности JPA, локальные для моих подмодулей? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь перейти от конфигурации на основе XML к конфигурации на основе Java в многомодульном проекте.Я также пытаюсь прекратить использовать файлы persistence.xml и orm.xml для моей настройки JPA.Моя попытка использовать метод LocalContainerEntityManagerFactoryBean.setPackagesToScan (packages) делает определение моего entityManagerFactory неправильным, как мне кажется.В этом определении знание о местонахождении пакетов, содержащих сущности JPA, просочилось из каждого подмодуля в модуль, где я определяю свой entityManagerFactory.

@Bean
@DependsOn("liquibase")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
    LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
    emf.setDataSource(dataSource);
    emf.setPackagesToScan(new String[] { "package.in.module1.db",
                                         "package.in.module2.db",
                                         "package.in.module3.db",
                                         "package.in.module4.db"});
    emf.setPersistenceProviderClass(HibernatePersistenceProvider.class);

    emf.setJpaProperties(jpaProperties());

    emf.setLoadTimeWeaver(instrumentationLoadTimeWeaver());

    return emf;
}

В справочной документации Spring Data я считаю, что это возможноиспользовать MergingPersistenceUnitManager для объединения единиц персистентности, определенных отдельно в модулях, но для этого потребуется использовать файлы persitence.xml и orm.xml вместо конфигурации на основе Java.

Что мне нужно сделать, чтобычтобы знать, где мои сущности JPA (и, если на то пошло, мои репозитории) внутри каждого отдельного подмодуля?

... Я думаю, что одним из решений было бы просто позволить entityManangerFacotry сканировать некоторый пакет высокого уровня, общийко всем модулям, но разве это не считается плохой практикой?

С уважением, Фредрик

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