2017-07-03 15 views
0

私はspring 4 appを持っています。私はspringリポジトリを使いたいです。私は春のjpa_hibernateSpring 4 + Springリポジトリ+ Hibernate 5:エラーJava設定を作成する

compile 'org.springframework.data:spring-data-jpa:1.11.4.RELEASE' 
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.0.5.Final' 

を含めるとoficial spring docなどの設定を作成しようとしました:

@Configuration 
@ComponentScan("my.domain") 
@EnableJpaRepositories("my.domain") 
@EnableTransactionManagement 
public class ApplicationConfiguration { 

    @Bean 
    public Config getConfig() { 
     return ConfigLoader.load(); 
    } 

    @Bean 
    @Autowired 
    public DataSource getDatasource(Config config) throws Exception { 
     Properties props = new Properties(); 
     Config dbConfig = config.getConfig("db.config"); 
     dbConfig.entrySet().forEach(entry -> props.put(entry.getKey(), entry.getValue().unwrapped())); 
     return new DataSourceFactory().createDataSource(props); 
    } 

    @Bean 
    @Autowired 
    public NamedParameterJdbcTemplate getJdbcTemplate(DataSource datasource) { 
     return new NamedParameterJdbcTemplate(datasource); 
    } 

    @Bean 
    @Autowired 
    public PlatformTransactionManager getTransactionManager(DataSource datasource) { 
     return new DataSourceTransactionManager(datasource); 
    } 

    @Bean 
    @Autowired 
    public EntityManagerFactory entityManagerFactory(DataSource datasource) { 

     HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
     vendorAdapter.setGenerateDdl(true); 

     LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
     factory.setJpaVendorAdapter(vendorAdapter); 
     factory.setDataSource(datasource); 
     factory.afterPropertiesSet(); 
     return factory.getObject(); 
    } 

    @Bean 
    @Autowired 
    public PlatformTransactionManager transactionManager(DataSource datasource) { 

     JpaTransactionManager txManager = new JpaTransactionManager(); 
     txManager.setEntityManagerFactory(entityManagerFactory(datasource)); 
     return txManager; 
    } 
} 

をしかし、試した、実行アプリとき、私はエラーを取得する:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in my.ApplicationConfiguration: 
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.IllegalStateException: 
Failed to determine Hibernate PersistenceProvider 

は私がファイルにspringbootと設定でリポジトリを使用しました、しかし、私はJavaの設定のスプリング(単純なコアアプリケーションだけの起動ではない)のためのworckの実際の例が見つかりません

+0

pls full stacktraceを表示 – xyz

+0

これは完全なスタックトレースです – user5620472

答えて

1

最新の春データのリリースを使用しているため、最新のHibernateのリリースにアップグレード:

compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.10.Final' 

春は、あなただけの単一hibernate-core依存性を必要とするのでpreviosly、廃止された別の瓶でプロビジョニングされたHibernateのEntityManagerFactory実装が必要です。

は、次の設定を使用することを検討してください:あなたは、古い春データのドキュメントをreferencsingた

@Configuration 
@ComponentScan("my.domain") 
@EnableJpaRepositories("my.domain") 
@EnableTransactionManagement 
public class ApplicationConfiguration { 

    @Bean 
    public Config getConfig() { 
     return ConfigLoader.load(); 
    } 

    @Bean 
    public DataSource getDatasource(Config config) throws Exception { 
     Properties props = new Properties(); 
     Config dbConfig = config.getConfig("db.config"); 
     dbConfig.entrySet().forEach(entry -> props.put(entry.getKey(), entry.getValue().unwrapped())); 
     return new DataSourceFactory().createDataSource(props); 
    } 

    @Bean 
    public NamedParameterJdbcTemplate getJdbcTemplate(DataSource datasource) { 
     return new NamedParameterJdbcTemplate(datasource); 
    } 

    @Bean 
    @Autowired 
    public PlatformTransactionManager getTransactionManager(DataSource datasource) { 
     return new DataSourceTransactionManager(datasource); 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 

     HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
     vendorAdapter.setGenerateDdl(true); 

     LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
     factory.setJpaVendorAdapter(vendorAdapter); 
     factory.setDataSource(dataSource()); 
     factory.setPackagesToScan("my.domain"); 

     return factory; 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { 
     JpaTransactionManager txManager = new JpaTransactionManager(); 
     txManager.setEntityManagerFactory(entityManagerFactory); 

     return txManager; 
    } 

} 

、現在のバージョンはavailable hereです。

関連する問題