jboss5.1 + spring + jpa [没有定义[javax.persistence.EntityManagerFactory]类型的唯一bean]

时间:2011-03-13 06:07:47

标签: spring jpa jboss

  1. 定义oracle-ds.xml

    <local-tx-datasource>
      <jndi-name>timekerOracleDS</jndi-name>
      ....
    </local-tx-datasource>
    
  2. 定义persistence.xml

    <persistence-unit name="timeker" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:timekerOracleDS</jta-data-source>
            <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
                <property name="hibernate.hbm2ddl.auto" value="update"/>
                <property name="hibernate.show_sql" value="true"/>
                <property name="hibernate.format_sql" value="true"/>
                <property name="jboss.entity.manager.factory.jndi.name" value="java:/timeker"/> 
            </properties>
    </persistence-unit>
    
  3. 定义spring applicationContext.xml

    <aop:aspectj-autoproxy />
    <context:annotation-config />
    <context:component-scan base-package="com.paokuang"/>
    <jee:jndi-lookup id="entityManagerFactory" jndi-name="java:/timeker"/>
    <bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">  
        <property name="transactionManagerName" value="java:/TransactionManager"/>  
        <property name="userTransactionName" value="UserTransaction"/>  
    </bean>
    <tx:annotation-driven transaction-manager="txManager"/>
    
  4. web.xml文件

    中定义Spring配置文件
    <persistence-unit-ref>
        <persistence-unit-ref-name>persistence/timeker</persistence-unit-ref-name>
        <persistence-unit-name>timeker</persistence-unit-name>       
    </persistence-unit-ref>
    

    但是当我将战争部署到jboss时,发生了错误:

    Error creating bean with name 'productTypeServiceBean': Injection of persistence fields failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 0
    
  5. 如何解决问题或告诉正确的配置spring + jpa + jboss?

1 个答案:

答案 0 :(得分:0)

您遗失了EntityManagerFactory中的applicationContext.xml bean。

可能最简单的方法是配置LocalContainerEntityManagerFactoryBean

 <bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="dataSource" ref="someDataSource"/>
  <property name="loadTimeWeaver">
    <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
  </property>
 </bean>

有关详细信息,请参阅http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/orm.html