http://www.gregbugaj.com/?p=172

ользую Spring 2.0.6 и Hibernate 3.2.x на apache tomcat5.5, теперь мы планируем преобразовать наши файлы сопоставления hybernate в файлы сопоставления поддержки hybernate + jpa. для этого мы создали такие файлы

daoConfig.xml

 <beans:bean id="dataSource" 
  class="org.springframework.jndi.JndiObjectFactoryBean">
      <beans: property name="jndiName">
    <beans: value>java:/comp/jdbc/Paymentsdb</beans:value>  
   </beans: property>
  </beans: bean> 
 <beans: bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <beans: property name="useTransactionAwareDataSource"
   value="true" />
  <beans: property name="dataSource">
   <beans:ref bean="dataSource"/>
  </beans: property>
  <beans: property name="hibernateProperties">
   <beans: props>
    <beans:prop key="hibernate.dialect">${database.target}</beans:prop>
    <beans:prop key="hibernate.connection.isolation">3</beans:prop>
    <beans:prop key="hibernate.current_session_context_class">jta</beans:prop>
    <beans:prop key="hibernate.transaction.factory_class">com.atomikos.icatch.jta.hibernate3.AtomikosJTATransactionFactory
    </beans:prop>
    <beans: prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
    </beans: prop>
    <beans: prop key="hibernate.connection.release_mode">on_close</beans: prop>
    <beans: prop key="hibernate.show_sql">false</beans: prop>
   </beans: props>
  </beans: property>
 </beans: bean>

 <beans: bean id="jpaTemplate"
  class="org.springframework.orm.jpa.JpaTemplate">
  <beans: property name="entityManagerFactory">
   <beans:ref bean="entityManagerFactory" />
  </beans: property>
 </beans: bean>

 <beans: bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <beans: property name="dataSource">
    <beans:ref bean="dataSource" />
  </beans: property>    
        <beans: property name="jpaVendorAdapter">
         <beans:bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                        <beans: property name="generateDdl" value="false"/>
                        <beans: property name="showSql" value="true" />
                        <beans: property name="databasePlatform" value="${database.target}" />
                </beans: bean>
        </beans: property>
        <beans: property name="persistenceXmlLocation">
   <beans:value>classpath:META-INF/persistence.xml</beans: value>
  </beans: property>    
    </beans: bean>   

<beans:bean id="atomikosTransactionManager"
    class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init"
    destroy-method="close">
    <beans:property name="forceShutdown" value="true" />
    <beans:property name="startupTransactionService" value="true" />
</beans:bean>

<beans:bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
    <beans:property name="transactionTimeout">
        <beans:value>300</beans:value>
    </beans:property>
</beans:bean>

<beans:bean id="transactionManager"
    class="org.springframework.transaction.jta.JtaTransactionManager">
    <beans:property name="transactionManager">
        <beans:ref bean="atomikosTransactionManager" />
    </beans:property>
    <beans:property name="userTransaction">
        <beans:ref bean="atomikosUserTransaction" />
    </beans:property>
</beans:bean>

</beans: beans> 

в моем daoconfig.xml я дал путь для persistence.xml, и это мой файл persistence.xml

  <?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
 version="1.0">
 <persistence-unit name="payhub" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
         <mapping-file>META-INF/orm.xml</mapping-file>
   <class>com.evolvus.common.model.TaUser</class>
           ----------
           ----------
           ---------- 
    <class>com.evolvus.common.model.TaBooks</class>
    </persistence-unit>
</persistence>

здесь я указываю имя моего файла отображения orm
Файл orm.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
 version="1.0">
 <description>Welcome</description> 
 <package>com.evolvus.common.model</package>

 <!--  TaUser starts-->
 <entity class="com.evolvus.common.model.TaUser" name="TaUser">
  <table name="ta_user" />
  <attributes>
   <id name="userId">
   <column name="USER_ID"/>
    <generated-value strategy="TABLE" />
   </id>
   <basic name="userName">
    <column name="USER_NAME" length="50" />
   </basic>
   <basic name="password">
    <column name="PASS_WORD" length="50" />
   </basic>
  </attributes>
 </entity>
 <entity class="com.evolvus.common.model.TaBooks" name="TaBooks">
  <table name="ta_user"/>
  <attributes>
    --------------
    --------------
    ------------ 
  </attributes>
 </entity>
  </entity-mappings> 

когда я пытаюсь запустить свой сервер. Я получаю сообщение об ошибке

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaTemplate' defined in ServletContext resource [/WEB-INF/xaconfig/daoJPAConfig.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/xaconfig/daoJPAConfig.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: payhub] Unable to build EntityManagerFactory
 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1317
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/xaconfig/daoJPAConfig.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: payhub] Unable to build EntityManagerFactory
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
 Caused by: javax.persistence.PersistenceException: [PersistenceUnit: payhub] Unable to build EntityManagerFactory
 at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
 at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132) 
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
 at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:329)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)  
 ... 42 more 

дайте мне какие-либо предложения

Ответы на вопрос(2)

Ваш ответ на вопрос