2015-11-26 12 views
14

के साथ हाइबरनेट 5 को कॉन्फ़िगर कैसे करें मैं हाइबरनेट 5 में अपग्रेड करना चाहता था लेकिन मैं इसे कुछ अजीब कारणों से काम नहीं कर सकता।स्प्रिंग 4

हाइबरनेट 4 के साथ मेरी वसंत संदर्भ विन्यास इस तरह दिखता है:

.... 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="annotatedClasses" ref="hibernateClasses" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect"> 
       ${hibernate.dialect} 
      </prop> 
      <prop key="hibernate.show_sql"> 
       ${hibernate.show_sql} 
      </prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.generate_statistics"> 
       ${hibernate.generate_statistics} 
      </prop> 
      <prop key="hibernate.hbm2ddl.auto"> 
       ${hibernate.hbm2ddl.auto} 
      </prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

.... 

मैं डेटा स्रोत और hibernateClasses सेम परिभाषा बाहर छोड़ दिया।

हाइबरनेट 5 के लिए मैं इस तरह hibernate5 के लिए पैकेज नाम बदल दिया है: एस:

.... 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="annotatedClasses" ref="hibernateClasses" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect"> 
       ${hibernate.dialect} 
      </prop> 
      <prop key="hibernate.show_sql"> 
       ${hibernate.show_sql} 
      </prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.generate_statistics"> 
       ${hibernate.generate_statistics} 
      </prop> 
      <prop key="hibernate.hbm2ddl.auto"> 
       ${hibernate.hbm2ddl.auto} 
      </prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

.... 

आवेदन संदर्भ शुरू करने क्योंकि यह LocalSessionFactoryBean वर्ग नहीं मिल सकता है विफल रहता है, जब मैं अपने परीक्षण चलाने के। इस वर्ग के वसंत-ORM जार में रहता है और वास्तव में मौजूद है, लेकिन किसी कारण से यह नहीं पाया जा सकता है और निम्न अपवाद फेंकता है:

<!-- Servlet API --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>${servlet-api.version}</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Spring libraries --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>cglib</groupId> 
       <artifactId>cglib</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>asm</groupId> 
       <artifactId>asm</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>${slf4j.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${slf4j.version}</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Test --> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>${cglib.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>asm</groupId> 
     <artifactId>asm</artifactId> 
     <version>${asm.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-mock</artifactId> 
     <version>${spring-mock.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.easymock</groupId> 
     <artifactId>easymock</artifactId> 
     <version>${easymock.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>${hsqldb.version}</version> 
     <scope>test</scope> 
    </dependency> 

किसी को भी है: इस प्रकार

java.lang.NoClassDefFoundError: Could not initialize class org.springframework.orm.hibernate5.LocalSessionFactoryBuilder 

मेरे Maven निर्भरता हैं एक विचार क्या मैं गलत कर रहा हूँ?

+0

आपकी पोम फ़ाइल में आपका हाइबरनेट संस्करण क्या है? –

+0

मैं जिस संस्करण का उपयोग करता हूं वह 5.0.4 है। अंतिम – Tranquilized

+1

आपका वसंत संस्करण क्या है? मुझे वसंत 4.2.6 और हाइबरनेट 5.5.3 कॉन्फ़िगरेशन के साथ एक ही समस्या है। –

उत्तर

9

हो सकता है आप जोड़ना चाहिए

<dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>jta</artifactId> 
    <version>1.1</version> 
</dependency> 

मैं एक ही मुद्दा था, और मेरी प्रारंभिक लॉग के बारे में,

java.lang.NoClassDefFoundError: javax/transaction/SystemException

+0

Thnx !! यह चाल है – Tranquilized

6

@sapna जवाब काम कर रहा है शिकायत की।

लेकिन क्यों यह हाइबरनेट 5.0.3.Final और 5.0.4.Final के बीच टूट जाता है के बारे में उत्सुक लोगों के लिए, यहाँ जवाब है:

<dependency> 
    <groupId>org.apache.geronimo.specs</groupId> 
    <artifactId>geronimo-jta_1.1_spec</artifactId> 
    <version>1.1.1</version> 
    <scope>compile</scope> 
</dependency> 

परिवर्तन: वे JTA पर निर्भरता, जो था हटाया वहां वर्णित है: HHH-10178

तो यदि आप 5.0.x से 5.0.4 या 5.0.5 तक अपग्रेड कर रहे हैं और अपने क्लासपाथ में कुछ भी नहीं बदलना चाहते हैं, तो आपको javax.transaction की तुलना में इस lib को आयात करना चाहिए: jta one ।

संपादित करें: वे hibernte 5.0.7 के साथ इस परिवर्तन को वापस लाया गया: HHH-10307, इसलिए इस संस्करण या नए के उन्नयन भी इस मुद्दे को ठीक करना चाहिए।

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