SpringBoot - многомодульный projet и источники данных - невозможно сканировать @ Entity.class - PullRequest
0 голосов
/ 14 января 2019

У меня возникли проблемы с настройкой моего многомодульного проекта с несколькими источниками данных. Итак, мне нужна ваша помощь.

Я уже попробовал: Мультимодульный проект Springboot Проблема SpringBoot ComponentScan с многомодульным проектом SpringBoot scanBasePackages не работает в многомодульном проекте А https://mhdevelopment.wordpress.com/2014/09/16/how-to-configure-spring-boot-with-jpa-and-multiple-projects/

Но ничего не работает, у меня та же проблема.

Итак, мой мультимодульный путь к классам:

  • BusinessModule, включая репозитории и сущности: Базовый пакет: com.mycompany.business .
    В этом модуле у меня есть внешняя зависимость, где мы можем найти класс @Entity (пакет: com.mycompany.model )
  • RestModule, который используется для использования BusinessModule. Базовый пакет: com.mycompany.rest

Бизнес-конфигурация

Конфигурация для источников данных

Первый источник данных :

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", 
basePackages = {
        "com.mycompany.business.repository", "com.mycompany.model" })
@PropertySource(value = 
"file:${CPROCESS_INSTALL}/server/custom_config/datasources.properties")
public class BusinessDbConfig {

@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "business.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}

@Primary
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
        @Qualifier("dataSource") DataSource dataSource) {
    return builder.dataSource(dataSource)
            .packages("com.mycompany.business.model", "com.mycompany.model")
            .persistenceUnit("business").build();
}

@Primary
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
        @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
}
}  

Второй источник данных :

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "barEntityManagerFactory",     transactionManagerRef = "barTransactionManager", basePackages = {
    "com.mycompany.bonita.repository" })
@PropertySource(value =     "file:${CPROCESS_INSTALL}/server/custom_config/datasources.properties")
public class BonitaDbConfig {

@Bean(name = "barDataSource")
@ConfigurationProperties(prefix = "bonita.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "barEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean barEntityManagerFactory(EntityManagerFactoryBuilder builder,
        @Qualifier("barDataSource") DataSource dataSource) {
    return builder.dataSource(dataSource).packages("com.mycompany.bonita.model")
            .persistenceUnit("bar").build();
}

@Bean(name = "barTransactionManager")
public PlatformTransactionManager barTransactionManager(
        @Qualifier("barEntityManagerFactory") EntityManagerFactory barEntityManagerFactory) {
    return new JpaTransactionManager(barEntityManagerFactory);
}

}  

Конфигурация хранилища

@RepositoryRestResource
public interface CDocumentRepository extends JpaRepository<CDocument, Long> {

@Query("select dp from CDocument d where d.persistenceid = ?1")
public CDocument findByPersistenceId(Long persistenceId);
}  

Сущность

@javax.persistence.Entity(name = "CDocument")
@Table(name = "CDOCUMENT") 
public class CDocument{ ... }

Остальная конфигурация модуля

Конфигурация приложения

@SpringBootApplication(scanBasePackages= {"com.mycompany"})
@EnableJpaRepositories("com.mycompany")
@EntityScan("com.mycompany")
@Import({ BonitaDbConfig.class, BusinessDbConfig.class })
public class RestApplication extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(RestApplication.class);
}

public static void main(String[] args) {
    SpringApplication.run(RestApplication.class, args);

}
}

Мой контроллер

@RestController
public class CreateSpaceController {
private CDocushareConnectRepository cDocushareConnectRepository;
private CDocumentRepository cDocumentRepository;
private DocumentRepository          documentRepository;
private CustomtableRepository       customTableRepository;
private CFieldsMappingRepository    cFieldsMappingRepository;

public CreateSpaceController(CDocumentRepository cDocumentRepository) {
    super();
    this.cDocumentRepository = cDocumentRepository;

}
...
}

Когда я пытаюсь запустить тест или приложение, у меня появляется эта ошибка:

java.lang.IllegalArgumentException: Not a managed type: class com.mycompany.model.CDocument

Не знаю почему ... Любая помощь?

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