2015-11-21 14 views
11

In un'applicazione Spring Boot sto provando a configurare più connessioni database. Ho iniziato a creare l'origine dati primaria, ma sto ricevendo il seguente errore sul metodo mySqlEntityManagerFactory.Spring Boot EntityManagerFactoryBuilder non avviato automaticamente

Impossibile eseguire l'autowire. senza fagioli di EntityManagerFactoryBuilder

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; 
import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Primary; 
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.transaction.annotation.Transactional; 

import javax.persistence.PersistenceContext; 
import javax.sql.DataSource; 
import java.util.HashMap; 
import java.util.Map; 

@Configuration 
@Transactional 
@EnableTransactionManagement 
@EnableJpaRepositories(
     basePackages = "digital.sheppard.dao", 
     entityManagerFactoryRef = "entityManager", 
     transactionManagerRef = "transactionManager") 
public class PrimaryDBConfig { 

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

    @PersistenceContext(unitName = "primary") 
    @Primary 
    @Bean(name = "entityManager") 
    public LocalContainerEntityManagerFactoryBean mySqlEntityManagerFactory(EntityManagerFactoryBuilder builder) { 
     return builder.dataSource(mysqlDataSource()).persistenceUnit("primary").properties(jpaProperties()) 
       .packages("digital.sheppard.model").build(); 
    } 

    private Map<String, Object> jpaProperties() { 
     Map<String, Object> props = new HashMap<String, Object>(); 
     props.put("hibernte.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy"); 
     props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); 

     return props; 
    } 

} 

come faccio autowire l'EntityManagerFactoryBuilder?

Sto cercando di seguire il codice su questo blog https://raymondhlee.wordpress.com/2015/10/31/configuring-multiple-jpa-entity-managers-in-spring-boot/

Ecco la classe principale se è utile

@Configuration 
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
@ComponentScan 
public class Application extends SpringBootServletInitializer { 

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

} 
+0

Hai disabilitato le classi di autoconfigurazione correlate a Hibernate (come HibernateJpaAutoConfiguration.class)? – dunni

+0

Sì @EnableAutoConfiguration (exclude = {DataSourceAutoConfiguration.class}) nella classe principale dell'applicazione. Ho aggiornato la domanda con questo codice – SheppardDigital

+0

@Sheppard Ho riscontrato lo stesso problema. trovato l'anima per questo? – Suresh

risposta

0

è stato causato dal software IDE, impostare queste opzioni enter image description here

+0

Impostazioni -> Ispezioni -> Molla -> Avviso –