title: Hibernate connect to multiple database with same tables
body: <p>I have to connect to two databases (PostgreSQL , Oracle) which contains same tables.
  When I create entities of same tables in different packages it doesn't work.</p>
  
  <p>Even though using two database connections the application always points to one database connection only.</p>
  
  <p>Is it possible in Hibernate to connect to same tables from different databases?</p>
  
  <p><strong>application.properties</strong></p>
  
  <pre><code>#DataSource settings for Postgres
  datasource.secondary.url =jdbc:postgresql://localhost:5433/****
  datasource.secondary.username =postgres
  datasource.secondary.password =Postgre@1234
  datasource.secondary.driverClassName=org.postgresql.Driver
  datasource.secondary.dialect=org.hibernate.dialect.PostgreSQLDialect
  
  #DataSource settings for oracle
  datasource.primary.url = jdbc:oracle:thin:@localhost:1521:xe
  datasource.primary.username = ***
  datasource.primary.password = ***
  datasource.primary.driverClassName=oracle.jdbc.OracleDriver
  </code></pre>
  
  <p><strong>Configuration</strong></p>
  
  <pre><code>@Configuration
  public class MultipleDBConfig {
  
      @Primary
      @Bean(name = "oracleDb")
      @ConfigurationProperties(prefix = "datasource.primary")
      public DataSource mysqlDataSource() {
          return DataSourceBuilder.create().build();
      }
  
  
      @Bean(name = "postgresDb")
      @ConfigurationProperties(prefix = "datasource.secondary")
      public DataSource postgresDataSource() {
          return  DataSourceBuilder.create().build();
      }
  
  }
  </code></pre>
  
  <p><strong>Primary</strong></p>
  
  <pre><code>@Configuration
  @EnableJpaRepositories(
              entityManagerFactoryRef = "primaryEntityManager",
              transactionManagerRef = "primaryEntityManagerFactory",
              basePackages = {"com.ubl.model.*"})
  public class PrimaryDBConfig {
  
      @Bean(name = "primaryEntityManagerFactory")
      public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
          JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
          LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
          em.setDataSource(dataSource());
          em.setPackagesToScan(new String[] {"com.ubl.model.migration.entity.oracle"});
          em.setJpaVendorAdapter(vendorAdapter);
          em.setJpaProperties(additionalJpaProperties());
          em.setPersistenceUnitName("customers");
  
          return em;
      }
  
      Properties additionalJpaProperties(){
          Properties properties = new Properties();
          properties.setProperty("hibernate.hbm2ddl.auto", "update");
          properties.setProperty("hibernate.dialect", "org.hibernate.dialect.OracleDialect");
          properties.setProperty("hibernate.show_sql", "true");
  
          return properties;
      }
  
      @Bean
      public DataSource dataSource(){
          return DataSourceBuilder.create()
                  .url("jdbc:oracle:thin:@localhost:1521:xe")
                  .driverClassName("oracle.jdbc.OracleDriver")
                  .username("****")
                  .password("****")
                  .build();
      }   
  
      @Bean(name = "primarytransactionManager")
      public JpaTransactionManager transactionManager(EntityManagerFactory customerEntityManager){
          JpaTransactionManager transactionManager = new JpaTransactionManager();
          transactionManager.setEntityManagerFactory(customerEntityManager);
  
          return transactionManager;
      }
  
  }
  </code></pre>
  
  <p><strong>Secondary</strong></p>
  
  <pre><code>@Configuration
  @EnableTransactionManagement
  @EnableJpaRepositories(
          entityManagerFactoryRef = "secondaryEntityManagerFactory",
          transactionManagerRef = "secondaryTransactionManager",
          basePackages = {"com.ubl.*"})
  public class SecondaryDBConfig {
  
      @Autowired
      JpaVendorAdapter jpaVendorAdapter;
  
      @Value("${datasource.secondary.url}")
      private String databaseURL; 
  
      @Value("${datasource.secondary.username}")
      private String username;
  
      @Value("${datasource.secondary.password}")
      private String password;
  
      @Value("${datasource.secondary.driverClassName}")
      private String driverClassName;
  
      @Value("${datasource.secondary.dialect}")
      private String dialect;
  
      public SecondaryDBConfig() {
          System.out.println("Secondary repository");
          System.out.println("driverClassName: *************" +driverClassName);
      }
  
      public DataSource dataSource() {
          DriverManagerDataSource dataSource = new DriverManagerDataSource(databaseURL, username, password);
          dataSource.setDriverClassName(driverClassName);
          return dataSource;
      }
  
      @Bean(name = "secondaryEntityManager")
      public EntityManager entityManager() {
          return entityManagerFactory().createEntityManager();
      }
  
      @Bean(name = "secondaryEntityManagerFactory")
      public EntityManagerFactory entityManagerFactory() {
          Properties properties = new Properties();
          properties.setProperty("hibernate.dialect", dialect);
  
          LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
          emf.setDataSource(dataSource());
          emf.setJpaVendorAdapter(jpaVendorAdapter);
          emf.setPackagesToScan("com.ubl.model.*");   // package for entities
          emf.setPersistenceUnitName("secondaryPersistenceUnit");
          emf.setJpaProperties(properties);
          emf.afterPropertiesSet();
          return emf.getObject();
      }
  
      @Bean(name = "secondaryTransactionManager")
      public PlatformTransactionManager transactionManager() {
          return new JpaTransactionManager(entityManagerFactory());
      }
  
  
  }
  </code></pre>
  
  <p>When I run the application I get below error:
  Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in namespace (, )</p>