java - @Transactional Controller 方法不起作用

标签 java spring hibernate transactions controller

在我的 Spring MVC 应用程序中,我的 Controller 中有一个方法,需要将一堆对象(从上传的文件构建)保存到数据库中。让我们暂时把关于事务是否应该在 Controller 或服务层中完成的整个问题放在一边——重点是在 Controller 中完成它在技术上应该是可行的,但我发现了问题。 如果您查看下面的代码,我期望的是,如果对 saveContact 的三个调用中的任何一个因异常而失败(任何异常,因为我放置了 rollbackFor = Exception.class ),那么所有三个调用都应该回滚。不过,我看到的是,如果第三个失败,前两个的数据仍然存在于数据库中。抛出的异常是 PersistenceException,所以我相信这应该会触发回滚,但事实并非如此(它会冒泡到客户端的浏览器,这正是我所期望的,因为我没有捕获它)。

code removed for security reasons

谢谢

最佳答案

使用 proxy-target-class="true"你告诉 spring 使用 cglib 来处理代理,但你已经指定了scoped-proxy="interfaces"。

查看 https://stackoverflow.com/a/15568457/117839

关于java - @Transactional Controller 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475085/

相关文章:

java - 通过 IntelliJ-Idea 生成实体时面临问题

java - 为 HttpDelete 编程 Spring MVC Controller 和 jsp

hibernate - JPA 2.0 : Load a subset of fields for an entity

java - 如何在 JPA XML 映射文件中使用 AttributeConverter(JPA 2.1)?

spring 5 webflux功能端点请求中不存在访问控制原始 header

java - Hibernate 一对一单向 - id 未分配

java - RecyclerView - 根据标志实现黑白项目图像

java - 如何在 JPA/Hibernate 中使用 @Id 和字符串类型?

java - 从 Android TextView 中提取多种颜色

java - Spring bean 的多个实例