SpringFramework:@Transactional(readOnly = true) 不适用于 h2

2024-02-14

我正在使用 SpringFramework 进行事务测试。 我有以下课程。

用户服务类

@Transactional
public interface UserService {
    void add(User user);

    @Transactional(readOnly = true)
    User get(String id);

    @Transactional(readOnly = true)
    List<User> getAll();

    void deleteAll();

    void update(User user);
}

UserServiceImpl.类

public class UserServiceImpl implements UserService {
    // skip some methods
    @Override public void update(User user) { userDao.update(user); }
}

测试用户服务.class

public class TestUserService extends UserServiceImpl {
    @Override
    public List<User> getAll() {
        for (User user : super.getAll()) {
            // try to update in get* method. it's read-only. 
            super.update(user);
        }
        return null;
    }
}

测试代码

@Test(expected = TransientDataAccessResourceException.class)
public void readOnlyTransactionAttribute() {
    testUserService.getAll();
}

此测试代码是使用mysql时的成功案例。但使用H2内存数据库时失败。这是因为交易完成时没有异常。

我阅读了Spring框架文档并发现了以下内容:http://docs.spring.io/spring/docs/4.3.x/javadoc-api/org/springframework/transaction/annotation/Transactional.html#readOnly-- http://docs.spring.io/spring/docs/4.3.x/javadoc-api/org/springframework/transaction/annotation/Transactional.html#readOnly--

这只是作为实际交易子系统的提示;它不一定会导致写访问尝试失败。当请求只读事务时,无法解释只读提示的事务管理器不会抛出异常,而是默默地忽略该提示。

但我想知道是否有办法用H2数据库通过这个测试。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringFramework:@Transactional(readOnly = true) 不适用于 h2 的相关文章

  • jdbcAuthentication() 而不是 inMemoryAuthentication() 不提供访问权限 - Spring Security 和 Spring Data JPA

    我只是使用 spring mvc gradle spring security spring data jpa 创建简单的应用程序 现在我想测试 spring security 是如何工作的 但是我有一个问题 首先我向您展示一些代码 然后我
  • RuntimeException:必须提供 MemberAccess 实现

    我正在使用一个访问公共字段的模板Customer像这样的对象 div div div div div div div div div div 然而 当我打电话时process on the TemplateEngine templateEn
  • Spring框架入门[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Spring 3.0 SimpleMailMessage 支持

    我在我的 gmail 帐户上收到电子邮件 但发件人始终是我自己 而不是该人的电子邮件地址 即使我在实现类中将其硬编码为message setFrom email protected cdn cgi l email protection 仍然
  • Spring:url 无法正确解析链接

    尽管我对 Java 有丰富的经验 但我对 Spring 框架和 Web 应用程序还很陌生 当我在本地 tomcat 服务器上运行我的网站时 URL 为 http localhost 8080 myApp 现在 请求映射将我委托到我的主页 R
  • 理解 Spring AOP [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 Spring 3 0 框架 但仍然是新手 谁能通俗地解释一下什么是AOP编程 一个简短的例子肯定会有帮助 Spring 如
  • 执行 POST 请求时 Spring Boot 端点 403 OPTIONS

    我正在使用 Spring 运行一个服务 当我的 Angular 前端尝试发出 POST 请求时 会收到带有请求方法 选项的 403 错误 Spring 服务和 Angular 应用程序都在我的机器上本地运行 我尝试使用 Chrome 插件切
  • 使用 Spring Java 配置自动装配 bean

    是否可以使用Spring的 Autowired用 Java 编写的 Spring 配置中的注释 例如 Configuration public class SpringConfiguration Autowired DataSource d
  • 如何设置Spring Security SecurityContextHolder策略?

    我在我的服务中使用异步方法 Spring 3 Async注解 我遇到了一个问题 生成的线程没有安全上下文 原因是 Spring Security 默认使用SecurityContextHolder MODE THREADLOCAL其上下文持
  • Spring Cloud Stream 和 Hibernate 验证器

    最近 我一直在玩Spring Cloud Stream的最后一个版本 使用其函数式编程风格 虽然我已经读完了全文文档 https cloud spring io spring cloud static spring cloud stream
  • Spring security不允许加载CSS或JS资源

    资源位于 src main resources static css 或 src main resources static js 下 我使用的是 spring boot 安全类是 Configuration EnableWebMvcSec
  • 如何在不同的端口上运行@RestController?

    我在用着spring rest创造一些 RestController小服务程序 该应用程序不是在网络服务器上运行 而是作为带有嵌入式 tomcat 的简单命令行工具运行 它们中的大多数应该在公共端口上运行 该端口是使用指定的server p
  • 模拟匿名函数

    我正在编写 jUnits 但被 Lambda 表达式困住了 有没有办法模拟匿名函数 return retryTemplate execute retryContext gt return mockedResponse 在上面的代码中 我试图
  • Spring Boot - 在部署时启动后台线程的最佳方式

    我在 Tomcat 8 中部署了一个 Spring Boot 应用程序 当应用程序启动时 我想在后台启动一个工作线程 Spring Autowires 具有一些依赖项 目前我有这个 SpringBootApplication EnableA
  • 将时间戳变量添加到应用程序属性中的文件夹路径值

    所以我需要在 app properties 文件中设置一个文件夹路径名称值 我还想以当前时间戳命名它 这样当它用于创建文件时 它也会创建文件夹 我目前拥有的不起作用 screenshot events STARTED SUCCEEDED F
  • 根据查询参数将相同的URL映射到Spring中的不同控制器

    我正在使用基于 spring 注解的控制器 我希望我的 URL user messages 映射到某个控制器 a 如果存在查询参数标记 否则映射到某个不同的控制器 b 这是必需的 因为当存在参数标签时 可以存在更多参数以及我想要在不同控制器
  • JDBCTemplate 可选参数

    我正在使用 spring JDBCTemplate 我有一个场景 其中需要传递到查询函数中的参数是条件 可选的 例如 我有以下代码 List
  • Jersey 和 Spring 中的全局异常处理?

    我正在使用 Jersey 和 Spring 3 2 以及 Open CMIS 开发 RESTful Web 服务 我没有使用 Spring 的 MVC 模式 它只是 Spring IOC 和 Jersey SpringServlet 控制器
  • 考虑在配置中定义“org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder”类型的 bean

    我正在尝试将 jwt 令牌连接到我的项目 但在工作过程中遇到了一些问题 我已按照上述说明进行操作here https auth0 com blog implementing jwt authentication on spring boot
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要

随机推荐