hibernate - Spring:尚未配置事务管理器

标签 hibernate spring transactions

我已经被这个问题困扰了一段时间,但没有找到解决方案。希望有人能帮助我。

我配置了 HibernateTransactionManager。但是,我在日志文件中看到以下消息:

调试[http-8080-1] AnnotationTransactionAttributeSource.getTransactionAttribute(107) |添加具有属性 [PROPAGATION_REQUIRED、ISOLATION_DEFAULT、-nl.forestfields.picnic.domain.model.exception.IllegalCostException] 的事务方法 [cashIn]

调试[http-8080-1] AnnotationTransactionAspect.createTransactionIfNecessary(267) |正在跳过事务连接点 [nl.forestfields.picnic.view.controller.ShoppingListController.cashIn],因为尚未配置事务管理器

此外,如果出现异常,事务也不会回滚。

这是我的配置:

野餐-servlet.xml:

  <beans>

    <context:component-scan base-package="picnic" />
    <context:annotation-config />

    <tx:annotation-driven />
    .
    .
    .

野餐上下文-db.xml:

<bean class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" id="sessionFactory">

    <property name="configLocation" value="classpath:hibernate.cfg.xml" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        </props>
    </property>
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="sessionFactory" />
 </bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
        <value>${hibernate.connection.driver_class}</value>
    </property>
    <property name="url">
        <value>${hibernate.connection.url}</value>
    </property>
    <property name="username">
        <value>${hibernate.connection.username}</value>
    </property>
    <property name="password">
        <value>${hibernate.connection.password}</value>
    </property>
</bean>

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

应在事务内执行的代码:

@Transactional(rollbackFor=IllegalCostException.class)
public ModelAndView cashIn(@RequestParam final Long id) throws IllegalCostException, llegalOrderStateException, IllegalShoppingListStateException {

  final ShoppingList shoppingList = shoppingListRepository.getById(id);
  shoppingList.cashIn();
  shoppingListRepository.add(shoppingList);

  return new ModelAndView(...);
}

谁能看出问题所在吗?

干杯, 吉佩

最佳答案

尝试改变

<tx:annotation-driven />
       to
<tx:annotation-driven transaction-manager="transactionManager" />

此处找不到任何其他问题。

关于hibernate - Spring:尚未配置事务管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/739791/

相关文章:

java - 在 JSP 中上传和保存文件

mysql - 使用 JDBC 在 MyBatis 中回滚(无 Spring,无容器)

Mercurial abort : Input/output error, 交易中止!回滚完成

java - 如何在Hibernate中映射这种关系?

java - 如何使用 Spring/Hibernate 创建数据库?

java - 如何在 Spring Data 中通过示例对查询的两个日期之间的范围添加限制

postgresql - 为 child + 新字段重复使用复合键

java - 将解析后的 XML 对象加载到 Spring 上下文中

MySql:用于递增数字的正确事务隔离级别

Spring 数据-jpa :- Not an managed type Error