2011-12-26 10 views
6

sto cercando di integrare Hibernate 4.0.0.FINAL con Spring 3.1.0.RELEASE utilizzando @Configuration.Primavera + Hibernate: LocalSessionFactoryBean - NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext

In seguito, questo problema si verifica:

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

Questo è il mio file di 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); 
      } 
     }; 
    } 
} 

penso che potrebbe essere un problema con LocalSessionFactoryBean ma non riesco a capire che cosa è sbagliato. Potrei mancare qualcosa.

ho scoperto che è a causa della mancanza hibernate-annotation.jar se è 3.x Non so perché in 4,0 l'annotazione: org.hibernate.cfg.annotations.reflection.XMLContext è in hibernate- file jar di base e ancora errore.

Grazie in anticipo

+0

Hai provato questo con una versione inferiore di ibernazione? –

+0

Andare a. Se può essere risolto in Hibernate 4. Sarà fantastico. – xyzxyz442

+0

Passaggio alla modalità di sospensione 3.6.9. Trovato un altro errore: IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings ha un'interfaccia org.hibernate.cfg.Mappings come super-classe – xyzxyz442

risposta

7

OK Questo suona un po 'come si sta avendo problemi che forniscono versioni compatibili di tutte le dipendenze necessarie. Ecco alcuni pensieri su quello che potrebbe essere sbagliato:

  1. Non suona come stai usando Maven o simili per gestire le dipendenze. Si consiglia vivamente di utilizzare uno strumento automatico per gestire le proprie dipendenze poiché è molto difficile/incline a fornire manualmente tutte le dipendenze richieste. Detto questo dovresti essere in grado di scaricare la versione in un file zip contenente tutti i jar richiesti da here. È questo quello che hai fatto?

  2. nucleo sospensione dipende sospensione-comuni-annotations.jar. Tutte le annotazioni che erano in ibernazione-annotazioni sono state nel vaso principale per un po 'di tempo. Quindi hai bisogno di hibernate-commons-annotations.jar non hibernate-annotations.jar

+0

1: Sì, l'ho fatto. Scarica da [collegamento] (http://sourceforge.net/projects/hibernate/files/hibernate4/4.0.0.Final/) 2: Ok A proposito, non ho usato Maven. Gestisco questo progetto con Netbean IDE. Credo che ci sia sth con IDE anche se stesso. Ho riavviare tutto e la correzione è funzionante. Grazie. – xyzxyz442

+0

Sono contento che tu l'abbia ordinato. –

Problemi correlati