【发布时间】:2019-09-22 14:26:36
【问题描述】:
使用 spring-boot (2.1.8.RELEASE),我有一个看起来像这样的测试:
@Test
@Transactional
public void myTest() {
Company updatedCompany = companyRepository.save(company);
em.detach(updatedCompany);
// (1)
companyRepository.getOne(updatedCompany.getId());
// (2)
companyRepository.save(updatedCompany);
}
地点:
-
company被初始化为域实体。 -
em是EntityManager。 -
companyRepository扩展JpaRepository<Company, Long>, JpaSpecificationExecutor<Company>。
这会在(2) 线上抛出一个TransientObjectException。
但是,将行 (1) 替换为 companyRepository.findById(updatedCompany.getId()).get() 会使一切运行无异常。
这不是实际测试,而是我试图理解的代码中重现的问题。
更多版本:
- spring-data-jpa: 2.1.10.RELEASE
- 休眠核心:5.3.11.Final
- hibernate-entitymanager: 5.3.11.Final
【问题讨论】:
-
这不是一个解决方案,但你不需要
@Transactional在测试课上 -
正如我所说,这是复制,不是实际测试
标签: java hibernate spring-boot spring-data-jpa