2011-12-26 13 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; 

यह मेरा 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 अगर यह होता है 3.x क्यों 4.0 में एनोटेशन पता नहीं है की है: org.hibernate.cfg.annotations.reflection.XMLContext hibernate- में है कोर जार फ़ाइल और यह अभी भी त्रुटि है।

अग्रिम धन्यवाद

+0

क्या आपने इसे हाइबरनेट के निचले संस्करण के साथ करने की कोशिश की है? –

+0

जा रहे हैं। अगर यह हाइबरनेट 4 में ठीक हो सकता है। यह बहुत अच्छा होगा। – xyzxyz442

+0

हाइबरनेट 3.6.9 में बदल रहा है। एक और त्रुटि मिली: असंगत क्लासChangeError: class org.hibernate.cfg.ExtendedMappings में इंटरफ़ेस org.hibernate.cfg है। सुपर क्लास – xyzxyz442

उत्तर

7

ठीक यह एक बहुत लगता है आप आवश्यक निर्भरता के सभी की संगत के संस्करण उपलब्ध कराने में समस्या हो रही है। यहाँ क्या गलत हो सकता है पर कुछ विचार कर रहे हैं:

  1. जैसे आप अपने निर्भरता का प्रबंधन करने के Maven या इसी तरह के प्रयोग कर रहे हैं यह ध्वनि नहीं करता है। अपनी निर्भरताओं को प्रबंधित करने के लिए एक स्वचालित उपकरण का उपयोग करने की दृढ़ता से अनुशंसा की जाती है क्योंकि यह सभी आवश्यक निर्भरताओं को मैन्युअल रूप से प्रदान करने के लिए बहुत कठिन/त्रुटि प्रवण होता है। उस ने कहा कि आप here से सभी आवश्यक जार युक्त एक ज़िप फ़ाइल में रिलीज डाउनलोड करने में सक्षम होना चाहिए। क्या आपने यह किया है?

  2. हाइबरनेट कोर हाइबरनेट-कॉमन्स-एनोटेशन.जर पर निर्भर करता है। हाइबरनेट-एनोटेशन में मौजूद सभी एनोटेशन थोड़ी देर के लिए कोर जार में हैं। तो आपको हाइबरनेट-कॉमन्स-एनोटेशन की आवश्यकता है .jar hibernate-annotations.jar

+0

1: हाँ, मैंने किया। [लिंक] से डाउनलोड करें (http://sourceforge.net/projects/hibernate/files/hibernate4/4.0.0.Final/) 2: ठीक जिस तरह से मैंने मैवेन का उपयोग नहीं किया। मैं इस परियोजना को नेटबीन आईडीई के साथ चलाता हूं। मुझे लगता है कि आईडीई के साथ भी sth है। मैंने सबकुछ फिर से शुरू कर दिया है और फिक्स ठीक काम करता है। धन्यवाद। – xyzxyz442

+0

बहुत खुश है कि आपने इसे हल किया। –

संबंधित मुद्दे