2011-12-26 26 views
6

私は@Configurationを使用してSpring 3.1.0.RELEASEHibernate 4.0.0.FINALを統合しようとしています。その後春+休止状態:LocalSessionFactoryBean - NoSuchMethodError:org.hibernate.cfg.annotations.reflection.XMLContext

、この問題が発生します。

BeanCreationException: Error creating bean with name 'alertsSessionFactoryBean' 
NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext$Default.getDelimitedIdentifier()Ljava/lang/Boolean; 

は、これは私のPersistenceHibernateConfigファイル

@Configuration 
@EnableTransactionManagement 
public class PersistenceHibernateConfig { 

    @Value("${jdbc.driverClassName}") 
    private String driverClassName; 

    @Value("${jdbc.url}") 
    private String url; 

    @Value("${hibernate.dialect}") 
    String hibernateDialect; 

    @Value("${hibernate.show_sql}") 
    boolean hibernateShowSql; 

    @Value("${hibernate.hbm2ddl.auto}") 
    String hibernateHbm2ddlAuto; 

    @Bean 
    public LocalSessionFactoryBean alertsSessionFactoryBean() { 
     final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(this.restDataSource()); 
     sessionFactory.setPackagesToScan(new String[]{"com.cloudlb"}); 
     sessionFactory.setHibernateProperties(this.hibernateProperties()); 

     return sessionFactory; 
    } 

    @Bean 
    public DataSource restDataSource() { 
     final DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName(this.driverClassName); 
     dataSource.setUrl(this.url); 
     dataSource.setUsername("test"); 
     dataSource.setPassword("1234"); 

     return dataSource; 
    } 

    @Bean 
    public HibernateTransactionManager transactionManager() { 
     final HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setSessionFactory(this.alertsSessionFactoryBean().getObject()); 

     return txManager; 
    } 

    @Bean 
    public PersistenceExceptionTranslationPostProcessor exceptionTranslationPostProcessor() { 
     return new PersistenceExceptionTranslationPostProcessor(); 
    } 

    @Bean 
    public PersistenceExceptionTranslator exceptionTranslator() { 
     return new HibernateExceptionTranslator(); 
    } 

    final Properties hibernateProperties() { 
     return new Properties() { 
      { 
       this.put("persistence.dialect", PersistenceHibernateConfig.this.hibernateDialect); 
       this.put("hibernate.hbm2ddl.auto", PersistenceHibernateConfig.this.hibernateHbm2ddlAuto); 
       this.put("hibernate.show_sql", PersistenceHibernateConfig.this.hibernateShowSql); 
      } 
     }; 
    } 
} 

である私はそれがLocalSessionFactoryBeanに問題があると思うが、私は間違っているかを理解することはできません。私は何かを見逃しているかもしれない。

私はそれが原因で休止状態-annotation.jarをそれはなぜ注釈4.0にはわからない3.xの であれば行方不明であることが判明:org.hibernate.cfg.annotations.reflection.XMLContextはhibernate-ですコアjarファイルであり、それでもエラーです。

は、事前に必要なすべての依存関係の互換性のあるバージョンを提供する問題を抱えているようにこれはたくさんの音

+0

これを低バージョンのhibernateで試しましたか? –

+0

に行く。それがHibernate 4で修正できるなら、それは素晴らしいでしょう。 – xyzxyz442

+0

Hibernate 3.6.9への変更。別のエラーが発生しました: IncompatibleClassChangeError:クラスorg.hibernate.cfg.ExtendedMappingsには、インターフェイスorg.hibernate.cfgがあります。スーパークラスとしてのマッピング – xyzxyz442

答えて

7

OKをいただき、ありがとうございます。ここで間違っている可能性がどのようにいくつかの考えがあります:

  1. あなたの依存関係を管理するためのMavenまたは類似を使用しているようには聞こえません。自動ツールを使用して依存関係を管理することを強くお勧めします。これは、必要な依存関係をすべて手作業で提供することが非常に困難であるためです。それは、あなたがhereからの必要なすべてのjarを含むzipファイルでリリースをダウンロードできるはずだと言いました。これはあなたがしたことですか?

  2. Hibernateコアはhibernate-commons-annotations.jarに依存します。 hibernate-annotationsにあったすべての注釈は、しばらくの間、コアジャーに入っていました。だからあなたはhibernate-commons-annotations.jarを必要としません。hibernate-annotations.jar

+0

1:はい、ありました。ダウンロード[link](http://sourceforge.net/projects/hibernate/files/hibernate4/4.0.0.Final/) 2:OK ところで私はMavenを使用しませんでした。 Netbean IDEでこのプロジェクトを実行します。 私はIDE自体にもsthがあると思います。私はすべてを再起動し、修正はうまく動作します。感謝。 – xyzxyz442

+0

あなたがそれをソートして本当にうれしいです。 –