2011-12-26 5 views
6

Próbuję zintegrować Hibernate 4.0.0.FINAL z Spring 3.1.0.RELEASE użyciu @Configuration.wiosennym + Hibernate: LocalSessionFactoryBean - NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext

Następnie ten problem występuje:

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

To mój PersistenceHibernateConfig plik

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

myślę, że może to być problem z LocalSessionFactoryBean ale nie mogę zrozumieć, co jest nie tak. Może czegoś brakuje.

I okazało się, że to z powodu braku hibernacji-annotation.jar jeśli jest 3.x Nie wiem dlaczego w 4,0 adnotacji: org.hibernate.cfg.annotations.reflection.XMLContext jest w hibernate- plik JAR i nadal błąd.

góry dziękuję

+0

Czy próbowałeś tego z niższą wersją hibernacji? –

+0

Idąc do. Jeśli może naprawić w Hibernate 4. Będzie świetnie. – xyzxyz442

+0

Zmiana na tryb hibernacji 3.6.9. Wystąpił kolejny błąd: IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings ma interfejs org.hibernate.cfg.Mappings jako super klasa – xyzxyz442

Odpowiedz

7

OK To brzmi trochę jak masz problemy świadczących kompatybilne wersje wszystkich wymaganych zależności. Oto kilka myśli na temat tego, co może być nie tak:

  1. To nie brzmi jak używasz Maven lub podobny do zarządzania zależnościami. Zaleca się używanie automatycznego narzędzia do zarządzania zależnościami, ponieważ jest ono bardzo trudne/podatne na ręczne dostarczanie wszystkich wymaganych zależności. Powiedziałeś, że powinieneś móc pobrać wydanie w pliku zip zawierającym wszystkie wymagane słoiki z here. Czy to właśnie zrobiłeś?

  2. Rdzeń hibernacji zależy od trybu hibernacji-commons-adnotations.jar. Wszystkie adnotacje, które znajdowały się w adnotacjach typu hibernacja, od jakiegoś czasu znajdują się w rdzeniu. Potrzebujesz hibernacji-commons-adnotacji.jar nie hibernacji-adnotacje.jar

+0

1: Tak, zrobiłem. Pobierz z [link] (http://sourceforge.net/projects/hibernate/files/hibernate4/4.0.0.Final/) 2: Ok Przy okazji nie korzystałem z Mavena. Uruchomiłem ten projekt z Netbean IDE. Chyba jest coś nie tak z samym IDE. Ponownie uruchomiłem wszystko i poprawka działa dobrze. Podziękować. – xyzxyz442

+0

Wspaniale, że posortowaliście to. –