Генерация сущностей из таблиц из двух разных схем с помощью JPA 2.1 - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время я пытаюсь понять, как работать с двумя разными схемами в моем проекте: в настоящее время я могу успешно генерировать свои сущности из двух разных источников данных, которые я создал в Eclipse

Database Connection

По сути, это один и тот же сервер, но я вынужден использовать две разные строки подключения для доступа к обеим схемам.Проблема заключается в том, что путем переключения соединения для создания объектов из другой схемы предыдущие объекты не могут быть распознаны: Entities not recognized

Есть ли способ решить эту проблему?Есть ли способ для меня сделать мои сущности узнаваемыми, несмотря ни на что?

РЕДАКТИРОВАТЬ: я закончил создание 2 дополнительных проектов JPA, где я генерирую свои сущности, затем я добавил эти 2 проекта в POM основного проекта, но все ещеон читает только одну единицу постоянства, а объекты, поступающие из другой схемы, не распознаются.

1 Ответ

0 голосов
/ 04 декабря 2018

Забыл ответить на этот вопрос, я наконец нашел решение этой проблемы.В application.properties мы добавили свойства для схем modules и supplychain, и я создал 2 проекта JPA для обеих схем и создал там объекты.После этого мы создали bean-компоненты в SpringServletInitializer:

    private Map<String, String> jpaProperties() {

    Map<String, String> p = new HashMap<String, String>();

    p.put("hibernate.dialect", env.getProperty("spring.jpa.properties.hibernate.dialect"));
    p.put("hibernate.id.new_generator_mappings",
            env.getProperty("spring.jpa.properties.hibernate.id.new_generator_mappings"));
    p.put("hibernate.format_sql", env.getProperty("spring.jpa.properties.hibernate.format_sql"));
    p.put("hibernate.naming.physical-strategy", env.getProperty("spring.jpa.hibernate.naming.physical-strategy"));
    p.put("hibernate.ddl-auto", env.getProperty("spring.jpa.hibernate.ddl-auto"));

    return p;
}



@Bean
@ConfigurationProperties(prefix = "modules.datasource")
public DataSource modulesDataSource() {
    return DataSourceBuilder.create().build();
}

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

@Bean(name="modules")
public LocalContainerEntityManagerFactoryBean modulesEntityManagerFactory(
        org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder builder) throws IOException {
    return builder.dataSource(modulesDataSource()).packages(Moduli.class).properties(jpaProperties()).persistenceUnit("JPAModules").build();
}

@Bean(name="supplychain")
@Primary
public LocalContainerEntityManagerFactoryBean supplychainEntityManagerFactory(EntityManagerFactoryBuilder builder)
        throws IOException {
    return builder.dataSource(supplychainDataSource()).packages(Rent.class).properties(jpaProperties()).persistenceUnit("JPASupplychain").build();
}

@Bean(name = "modulesTransactionManager")
public PlatformTransactionManager modulesTransactionManager(EntityManagerFactoryBuilder builder)
        throws IOException {
    JpaTransactionManager tm = new JpaTransactionManager();
    tm.setEntityManagerFactory(modulesEntityManagerFactory(builder).getObject());
    tm.setDataSource(modulesDataSource());
    return tm;
}

@Bean(name = "supplychainTransactionManager")
@Primary
public PlatformTransactionManager supplychainTransactionManager(EntityManagerFactoryBuilder builder)
        throws IOException {
    JpaTransactionManager tm = new JpaTransactionManager();
    tm.setEntityManagerFactory(supplychainEntityManagerFactory(builder).getObject());
    tm.setDataSource(supplychainDataSource());
    return tm;
}

Добавив оба источника данных, я наконец смогу использовать оба постоянства!

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