2013-04-08 6 views
3

Я начал с новой технологии с весной 3 hibernate 4, и я попытался сделать следующие примеры из учебника. Каждый раз я получаю те же ошибки. Я работаю с Spring 3.1.1 Hibernate 4.1.0.Конфигурация файла Hibernate 4 и spring 3

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> 

<!-- Data Source Declaration --> 
    <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" > 
     <property name="driverClassName" value="org.postgresql.Driver" /> 
     <property name="url" value="jdbc:postgresql:Bibliotheque" /> 
     <property name="username" value="postgres" /> 
     <property name="password" value="root" /> 

    </bean> 

    <!-- Session Factory Declaration --> 
    <bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="DataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.ardia.Adherent</value> 
       <value>com.ardia.Emprunt</value> 
       <value>com.ardia.Fournisseur</value> 
       <value>com.ardia.Livre</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean> 
<!-- Transaction Manager is defined --> 
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="SessionFactory"/> 
    </bean> 

<!-- Enable the configuration of transactional behavior based on annotations --> 

<tx:annotation-driven transaction-manager="transactionManager"/> 

</beans> 

Это сообщение, и я не понимаю:

произошла ошибка обработки XML 'орг/springframework/сделки/перехватчик/TransactionInterceptor'. См Ошибка входа для получения более подробной информации

ошибка во время обработки '' /Hibernate_spring/src/application_configuration.xml

java.lang.NoClassDefFoundError: org/springframework/transaction/interceptor/TransactionInterceptor 
    at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser$AopAutoProxyConfigurer.configureAutoProxyCreator(AnnotationDrivenBeanDefinitionParser.java:126) 
    at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser.parse(AnnotationDrivenBeanDefinitionParser.java:84) 
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73) 
    at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1335) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1292) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.registerBeanDefinitions(BeansConfig.java:389) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.loadBeanDefinitions(BeansConfig.java:375) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:421) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:1) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

ответ

0

Убедитесь, что вы есть весна-tx.jar, весна-orm.jar и зимовать-EntityManager .jar для соответствующих версий в вашем пути к классам.

Также в вашей конфигурации указано, что на transactionManager неверно указано.

<!-- An id of txManager is assigned here --> 
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="SessionFactory"/> 
    </bean> 

<!-- While transactionManager is referenced here -->  
<tx:annotation-driven transaction-manager="transactionManager"/> 

Эта строка конфигурации должна изменить transaction-manager, чтобы указать на txManager боба:

<tx:annotation-driven transaction-manager="txManager"/> 
+0

У меня есть этот сосуд на моей библиотеке org.springframework.transaction-3.1.1.RELEASE.jar .И им не используя Maven – FERESSS

+0

это же ERREUR! !!! – FERESSS

+0

<свойство name = "sessionFactory" ref = "SessionFactory" /> <- в то время как TransactionManager упоминается здесь -> <ТХ: аннотацию управляемой транзакции менеджер = "txmanager" /> – FERESSS

0

Файл spring-tx.jar должен быть там, в вашем пути к классам означает, что он должен представить в (i.e. WEB-INF/lib) папке приложения

Проверьте, есть ли у вас только один из этих spring-tx.jar, имеющий несколько банок того же типа, также может привести к NoClassDefFoundError

+0

это то же самое :(У меня есть все jar spring 3.1 и я создаю свою собственную библиотеку, прикрепленную к проекту. И я проверяю, что есть одна транзакция jar с именем org.springframework.transaction-3.1.1.RELEASE.jar – FERESSS

0

Попробуйте добавить это в вашем pom.xml

<dependency> 
    <groupId>aopalliance</groupId> 
    <artifactId>aopalliance</artifactId> 
    <version>1.0</version> 
</dependency> 
+0

этот aopalliance jar связывает ваш менеджер транзакций с вашим весенним заявлением – Sudipta