2008-11-06 7 views
4

Je suis nouveau à Hibernate et j'essaie d'exécuter un exemple java/spring qui récupère des données d'une table dans MS SqlServer. Chaque fois que j'essaie d'exécuter le programme, la source de données se charge correctement. Mais quand le printemps tente de charger la session facotry il obtient l'erreur suivante:Hibernate Transaction Manager Problème

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'sessionFactory' 
     defined in class path resource [ml/spring/src/applicationContext.xml]: 
Instantiation of bean failed; nested exception is 
    java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 
    Caused by: java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 

est en dessous du fichier application Contexte J'utilise:

<!-- Data source bean --> 
<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource" > 
    <property name="driverClassName"> 
     <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value></property> 
    <property name="url"> 
     <value>jdbc:microsoft:sqlserver://machine:port</value></property> 
    <property name="username"><value>user</value></property> 
    <property name="password"><value>password</value></property> 
</bean> 

<!-- Session Factory Bean --> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource"><ref local="dataSource"/></property> 
    <property name="mappingResources"> 
    <list> 
     <value>authors.hbm.xml</value> 
    </list> 
    </property> 
    <property name="hibernateProperties"> 
     <value> 
      hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect 
     </value> 
    </property> 
</bean> 

<bean id="txManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
+0

que je cherchais à un problème similaire. Je posterai si je peux résoudre le mien, mais je suis comme vous, ne savez pas beaucoup au sujet d'hiberner. –

+0

Juste un commentaire - vous pouvez réduire la verbosité de votre xml en relpacing bar avec ou peut-être même p: foo = " barre "si vous utilisez l'espace de noms 'p' supporté par le printemps. – toolkit

Répondre

14

Il vous manque un fichier JAR contenant les classes de l'API JTA . Vous en avez probablement déjà un lorsque vous avez téléchargé Hibernate. Il devrait s'appeler quelque chose comme:

jta-1.1.jar 

Espérons que cela aide.

0

Si vous utilisez Maven, utilisez this,

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