0

我正在使用@Transaction带有两个持久单元名称的 spring data jpa 为我的服务实现多个事务(数据库)。并在 Jboss 6.4 EAP 中部署

春天的xml包括

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jee="http://www.springframework.org/schema/jee"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/data/jpa
             http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
             http://www.springframework.org/schema/tx 
             http://www.springframework.org/schema/tx/spring-tx-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/mvc
             http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
             http://www.springframework.org/schema/jee 
             http://www.springframework.org/schema/jee/spring-jee-3.1.xsd">

    <context:annotation-config />
    <tx:annotation-driven />
    <context:component-scan base-package="com.test.demo.domain.service" />
    <context:component-scan base-package="com.test.demo.domain" />
    <bean id="entityManagerFactory"
              class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="demo-domain" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
        </property>
        <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" />
    </bean>

    <bean id="entityManagerFactoryMeta"
              class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="demo-meta" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
        </property>
        <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" />
    </bean>
    <bean id="persistenceExceptionTranslationPostProcessor"
              class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <qualifier value="demoadmin"/>
    </bean>
    <bean id="transactionManagerMeta" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryMeta" />
        <qualifier value="demoappmeta"/>
    </bean>

    <jpa:repositories base-package="com.test.demo.domain.repository" />

</beans>

以下是我的服务详情

@Named(ServerConstants.SERVICE_DRAG_DROP)
**@Transactional("demoappmeta")**
public class DragDropService {
    private static final Logger LOG = LoggerFactory.getLoggerFactory().getDomainLogger(ServerConstants.LOGGER_DOMAIN, DragDropService.class.toString());

    @Inject
    private TbAsmiDragDropRepository dragDropRepo;

    public void createDragDrop(Message pMessage){
        JSONObject requestJson = pMessage.getRequestObject().getRequestJson();
        LOG.debug("inside createDragDrop() - Request : "+requestJson);

在 Jboss 我无法部署它,我得到以下异常:

引起:org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private com.test.demo.domain.repository.TbAsmiDragDropRepository com.test.demo.domain.service.DragDropService.dragDropRepo;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“tbAsmiDragDropRepository”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not an managed type: class com.test.demo.domain.entity.TbAsmiDragDrop

如有遗漏或有问题请指教

4

1 回答 1

0

我找到了解决方案,我们必须在中设置属性 entity-manager-factory-ref="en​​titymanagerfactoryrefname"

<jpa:repositories base-package="com.test.demo.domain.repository" entity-manager-factory-ref="entitymanagerfactoryrefname" />
于 2016-08-01T12:02:01.747 回答