首页 > 解决方案 > 如何为自动生成的 ID 执行 findById

问题描述

我有一个场景,我正在消费一个事件并将详细信息保存在数据库中。现在存储在数据库中的记录具有 id 字段 autogenerated @GeneratedValue(strategy = GenerationType.IDENTITY)

在我的测试用例中,我需要检查数据是否存储在数据库中并且是否符合预期。但我不确定我将如何findById()处理 SpringBoot Crud/JPA Repository,因为我不知道生成了什么值。

任何帮助,将不胜感激。

标签: spring-bootcrud-repository

解决方案


我认为您正在寻找注释@DirtiesContext

Test annotation表示ApplicationContext与测试关联的对象是脏的,因此应该关闭并从上下文缓存中删除。-javadoc _

阅读第 9.3.4 节-此处

检查 -示例如下:

@Test
@DirtiesContext
public void save_basic() {
    // get a course
    Course course = courseJpaRepository.findById(10001L);
    assertEquals("JPA ", course.getName());

    // update details
    course.setName("JPA - Updated");
    courseJpaRepository.saveOrUpdate(course);

    // check the value
    Course course1 = courseJpaRepository.findById(10001L);
    assertEquals("JPA - Updated", course1.getName());
}

顺便说一句 - 如何获取 id :只需通过 getter 方法从返回类型save

EmployeeDetails employeeDetails = emaployeeService.saveEmployeeDetails(employee);
int temp = employeeDetails.getID()

相关帖子: 这里


推荐阅读