spring-mvc 3.0.5: какой предпочтительный способ создания экземпляра менеджера сущностей JPA - PullRequest
0 голосов
/ 15 ноября 2010

Мой текущий рабочий код:

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)
...

Что я забыл настроить?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Что я забыл настроить?

Ну, вы ничего не показали :) Во всяком случае, Использование JPA в Spring без ссылки на Spring показывает один способдля выполнения действий:

Конфигурация

  • LocalEnityManagerFactoryBean для создания EntityManagerFactory
  • JpaTransactionManager для менеджера JPA транзакций
  • <tx:annotation-driven />, чтобы сказать Spring, чтобы он искал @Transactional
  • Ваше определение бина!

<?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>

Вот и все.Две аннотации и четыре определения компонента.

Посмотрите.

См. Также

2 голосов
/ 15 ноября 2010

Из справочного руководства Spring: Три варианта настройки JPA в среде Spring

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...