2014-03-30 38 views
8

我有一個配置有spring引導和配置註釋的spring應用程序。Spring with embedded derby:休眠方言棄用

JPA的配置是:

@Configuration 
@EnableTransactionManagement 
@EnableJpaRepositories 
public class JpaConfiguration { 

    @Bean 
    public DataSource dataSource() { 
     return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.DERBY).build(); 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, 
      JpaVendorAdapter jpaVendorAdapter) { 
     LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean(); 
     lef.setDataSource(dataSource); 
     lef.setJpaVendorAdapter(jpaVendorAdapter); 
     lef.setPackagesToScan(/* "..." */); 
     return lef; 
    } 

    @Bean 
    public JpaVendorAdapter jpaVendorAdapter() { 
     HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter(); 
     hibernateJpaVendorAdapter.setShowSql(true); 
     hibernateJpaVendorAdapter.setGenerateDdl(true); 
     hibernateJpaVendorAdapter.setDatabase(Database.DERBY); 
     return hibernateJpaVendorAdapter; 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager() { 
     return new JpaTransactionManager(); 
    } 
} 

我一貫獲取日誌中:

[...] 
HHH000400: Using dialect: org.hibernate.dialect.DerbyDialect 
HHH000430: The DerbyDialect dialect has been deprecated; use one of the version-specific dialects instead 
[...] 

我嘗試添加:

@Bean 
public DerbyTenSevenDialect jpaDialect() { 
    return new DerbyTenSevenDialect(); 
} 

但隨後返回的bean是不兼容:

LocalContainerEntityManagerFactoryBean lef //..... 
lef.setJpaDialect(JpaDialect); 

如何擺脫棄用警告?

回答

7

只需溝以下行完全(不與其他任何東西代替它):

hibernateJpaVendorAdapter.setDatabase(Database.DERBY); 

這就是我所做的和Hibernate正確登錄:

Using dialect: org.hibernate.dialect.DerbyTenSevenDialect 

之後,有沒有需要手動定義方言豆。休眠計算出它自己的正確方言

+0

修復它,謝謝。 –

+0

@guido偉大的:)! – geoand