【问题标题】:spring-mvc 3.0.5: what's the preferred way to instantiate the JPA entity managerspring-mvc 3.0.5:实例化 JPA 实体管理器的首选方法是什么
【发布时间】:2010-11-15 01:09:30
【问题描述】:

我当前的工作代码:

EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("TT-SpringMVCPU");
EntityManager em = emf.createEntityManager();

我想用这样的东西替换它:

@PersistenceContext(unitName = "TT-SpringMVCPU")
private EntityManager _entityManager;

当我尝试这样做时,我得到了这个错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'showController': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'TT-SpringMVCPU' is defined
    org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:341)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
...

我忘了配置什么?

【问题讨论】:

    标签: java spring jpa dependency-injection persistence


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我忘了配置什么?

      好吧,你什么也没显示 :) 不管怎样,Using JPA in Spring without referencing Spring 显示了一种做事方式:

      配置

      • LocalEnityManagerFactoryBean 创建EntityManagerFactory
      • JpaTransactionManager 经理 JPA 事务
      • <tx:annotation-driven /> 告诉 Spring 寻找 @Transactional
      • 你的 bean 定义!

       

      <?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: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/tx
          http://www.springframework.org/schema/tx/spring-tx.xsd">
      
          <bean id="entityManagerFactory"
              class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" />
      
          <bean id="productDaoImpl" class="product.ProductDaoImpl"/>
      
          <bean
              class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
      
          <bean class="org.springframework.orm.jpa.JpaTransactionManager">
              <property name="entityManagerFactory"
                  ref="entityManagerFactory" />
          </bean>
      
          <tx:annotation-driven />
      
      </beans>
      

      就是这样。两个注释和四个 bean 定义。

      看看吧。

      另见

      【讨论】:

        猜你喜欢
        • 2015-06-22
        • 1970-01-01
        • 2018-06-15
        • 2019-05-25
        • 2014-11-24
        • 1970-01-01
        • 2020-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多