2011-12-26 3 views
6

나는 Spring 3.1.0.RELEASE@Configuration을 사용하여 Hibernate 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; 

이 나는 ​​그것이 LocalSessionFactoryBean의 문제가 될 수 있지만, 내가 잘못이 무엇인지 이해할 수 없다 생각하는 내 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); 
      } 
     }; 
    } 
} 

입니다. 나는 뭔가를 놓칠지도 모른다. org.hibernate.cfg.annotations.reflection.XMLContext이 hibernate-에 있습니다

는 나는 그것 때문에 3.x를 왜 4.0에서 주석을 모르는 경우 최대 절전 모드 - annotation.jar 누락 된 것을 발견 core jar 파일이고 여전히 오류가 있습니다.

은 사전에 필요한 모든 종속성의 호환 버전을 제공하는 데 문제가있는 것처럼이 많이 소리

+0

절전 버전의 낮은 버전으로 이것을 시도 해 봤니? –

+0

. 그것은 최대 절전 모드에서 해결할 수 있다면 4. 그것은 좋을 것입니다. – xyzxyz442

+0

최대 절전 모드 3.6.9로 변경. 다른 에러가 있습니다 : IncompatibleClassChangeError : 클래스 org.hibernate.cfg.ExtendedMappings 인터페이스 org.hibernate.cfg가 있습니다. 수퍼 클래스로 매핑 – xyzxyz442

답변

7

확인을 주셔서 감사합니다. 다음은 잘못된 것일 수있는 몇 가지 생각입니다.

  1. 종속성을 관리하기 위해 Maven 또는 유사하게 사용하는 것처럼 들리지 않습니다. 필요한 모든 의존성을 수동으로 제공하는 것이 매우 어렵거나 오류가 발생하기 쉽기 때문에 자동 도구를 사용하여 종속성을 관리하는 것이 좋습니다. 즉, here의 모든 필요한 병이 들어있는 zip 파일로 릴리스를 다운로드 할 수 있어야한다고합니다. 네가 한 짓이야?

  2. 최대 절전 모드 코어는 hibernate-commons-annotations.jar에 의존합니다. 최대 절전 모드 주석에 있던 모든 주석은 이제 잠시 동안 핵심 병에있었습니다. 그래서 당신은 최대 절전 모드 - 주석 - annotation.jar 최대 절전 모드 - 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

정말 다행 이네요. –

관련 문제