有沒有辦法在同一個 @Transactional 方法中同時使用 EntityManager 和一些存盤庫?
在下面的代碼中,我希望最后一次評估是成功的。
@DataJpaTest
public class JobCategoryRepositoryTest {
[...]
@Test
void save_and_check() {
repository.save(JobCategory.builder("a1").build());
repository.save(JobCategory.builder("a2").build());
repository.save(JobCategory.builder("a3").build());
repository.flush();
assertThat(repository.getCount()).isEqualTo(3); // OK
EntityManager em = entityManagerFactory.createEntityManager();
List<JobCategory> results = em.createQuery("select j from JobCategory j", JobCategory.class).getResultList();
assertThat(results.size()).isEqualTo(3); // NOT OK
}
uj5u.com熱心網友回復:
你應該TestEntityManager在測驗中申請。它是一個包裝器,它創建(或回傳現有的)EntityManager保證系結到當前正在運行的 Spring 事務。
@DataJpaTest
public class JobCategoryRepositoryTest {
@Autowired
private TestEntityManager tem;
@Test
void save_and_check() {
repository.save(JobCategory.builder("a1").build());
repository.save(JobCategory.builder("a2").build());
repository.save(JobCategory.builder("a3").build());
repository.flush();
assertThat(repository.getCount()).isEqualTo(3); // OK
EntityManager em = tem.getEntityManager();
List<JobCategory> results = em.createQuery("select j from JobCategory j", JobCategory.class).getResultList();
assertThat(results.size()).isEqualTo(3); // OK
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/434312.html
