NoSuchBeanDefinitionException: компонент с именем «transactionManager» не определен.

Я разрабатываю приложение, используя Spring и Hibernate.

Когда я запускаю свое приложение, я получаю это сообщение об ошибке:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined

В моем файле приложения контекста у меня есть это:

<bean id="tansactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

Я погуглил о проблеме и нашел решение, которое мне нужно изменить в этой строке:

<bean id="tansactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">

By :

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

Но у меня возникла другая проблема:

org.springframework.beans.NotWritablePropertyException: Invalid property 'sessionFactory' of bean class [org.springframework.orm.jpa.JpaTransactionManager]: Bean property 'sessionFactory' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

Как я могу решить эту проблему ?


person Renaud is Not Bill Gates    schedule 17.06.2014    source источник
comment
Опубликуйте полную трассировку стека.   -  person Andrei Stefan    schedule 18.06.2014
comment
Вы используете jpa с спящим режимом? если вы используете jpa, вам нужно изменить sessionFactory на entityManagerFactory.   -  person OQJF    schedule 18.06.2014
comment
и причина неудачи вашего первого подхода только из-за опечатки в идентификаторе компонента.   -  person Adrian Shum    schedule 18.06.2014


Ответы (2)


У вас опечатка в аннотации "tansactionManager" отсутствует и "r", "transactionManager". Я сделал поправку, и у меня все заработало.

person Andrew G.    schedule 11.12.2014

Если вы используете фабрику сеансов, это должно работать

<bean id="tansactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

но если вы хотите использовать JPA EntityManager, вам нужно

    <bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
             <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

Пожалуйста, обратитесь к миграции- to-spring-3-1-and-hibernate-4-1 содержит хороший пример необходимых конфигураций

person M-Zaiady    schedule 11.12.2014