spring-boot - 如何为自动生成的 ID 执行 findById
问题描述
我有一个场景,我正在消费一个事件并将详细信息保存在数据库中。现在存储在数据库中的记录具有 id 字段 autogenerated @GeneratedValue(strategy = GenerationType.IDENTITY)
。
在我的测试用例中,我需要检查数据是否存储在数据库中并且是否符合预期。但我不确定我将如何findById()
处理 SpringBoot Crud/JPA 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()
相关帖子: 这里
推荐阅读
- javascript - 设置活动工作表未在 UI 中打开工作表
- python - Python Xarray 相关(corr)函数给出了不需要的输出
- google-apps-script - getRange 和 setValues 函数返回数据和列数之间的不匹配
- r - normalizePath("report.Rmd") 中的警告:path[1]="report.Rmd": No such file or directory
- html - Base64 PDF 无法在基于 Chromium 的浏览器上打开
- mysql - 我想制作一个 python 脚本来将图像上传到 django 服务器
- javascript - 对象旋转控制三个js
- node.js - TypeORM:如何 .find() 精确匹配?
- python-3.x - 是否可以使用 GraphAPI(不是页面或组,您自己的用户时间线)在 Facebook 上发布您自己的时间线
- terminal - 将 PyCharm 中的基本解释器更改为终端的默认路径