Используя 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>
.
Это приводит к TransientObjectException
на линии (2)
.
Однако замена строки (1)
на companyRepository.findById(updatedCompany.getId()).get()
заставляет все работать без исключения.
Это не реальный тест, а воспроизводимая проблема из моего кода, который я 'Я пытаюсь понять.
Еще несколько версий:
- spring-data-jpa: 2.1.10.RELEASE
- hibernate-core: 5.3.11.Final
- hibernate-entitymanager: 5.3.11.Final