2011-12-26 11 views
6

Estoy intentando integrar Hibernate 4.0.0.FINAL con Spring 3.1.0.RELEASE usando @Configuration.Primavera + Hibernate: LocalSessionFactoryBean - NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext

Posteriormente, este problema se produce:

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

Ésta es mi PersistenceHibernateConfig archivo

@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); 
      } 
     }; 
    } 
} 

creo que podría ser un problema con LocalSessionFactoryBean pero no puede entender lo que está mal. Puedo estar olvidando algo.

descubrí que es debido a la falta de hibernación-annotation.jar si es 3.x No sé por qué en la anotación 4.0: org.hibernate.cfg.annotations.reflection.XMLContext está en hibernate archivo jar central y todavía error.

gracias de antemano

+0

¿Ha intentado esto con una versión inferior de hibernate? –

+0

Ir a. Si se puede arreglar en Hibernate 4. Será genial. – xyzxyz442

+0

Cambiando a Hibernate 3.6.9. Obtuve otro error: IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings tiene la interfaz org.hibernate.cfg.Mappings como super clase – xyzxyz442

Respuesta

7

OK Esto se parece mucho a usted está teniendo problemas proporcionando versiones compatibles de todas las dependencias necesarias. Aquí hay algunas ideas sobre lo que podría estar equivocado:

  1. No suena como que está utilizando Maven o similares a administrar sus dependencias. Se recomienda encarecidamente el uso de una herramienta automática para administrar sus dependencias, ya que es muy difícil/propenso a errores proporcionar todas las dependencias requeridas manualmente. Dicho esto, debería poder descargar la versión en un archivo comprimido que contenga todos los archivos jar requeridos en here. ¿Es esto lo que hiciste?

  2. Hibernate core depende de hibernate-commons-annotations.jar. Todas las anotaciones que estaban en las anotaciones de hibernación han estado en el tarro principal desde hace un tiempo. Por lo tanto, necesita hibernate-commons-annotations.jar not hibernate-anotations.jar

+0

1: Sí, lo hice. Descargar desde [link] (http://sourceforge.net/projects/hibernate/files/hibernate4/4.0.0.Final/) 2: Ok Por cierto, no usé Maven. Ejecuto este proyecto con Netbean IDE. Supongo que también hay algo con IDE. He reiniciado todo y la solución funciona bien. Gracias. – xyzxyz442

+0

Me alegro de que lo haya ordenado. –

Cuestiones relacionadas