我想在实体中应用外部更改,所以我在EntityManager中使用了refresh()方法, 它能在EntityManager会话中正常工作。但是对于外部更改就不起作用了。
这是基于SpringBoot 2.x的简单代码:
@ExtendWith(SpringExtension.class)
@SpringBootTest
class RewardOrderRepositoryTest {
@Inject
private TestRepository testRepository;
@PersistenceContext
private EntityManager entityManager;
@Test
@Transactional
@Rollback(false)
public void test() {
final Test test = testRepository.findById(8L).get();
assertThat(test.getName(), is("Tom"));
// BREAK POINT : name modify to external mysql client(ex) mysql workbench)
entityManager.refresh(test);
assertThat(test.getName(), is("Alice")); // it's false, still Tom.
}
}
为什么外部更改没有反映出来? refresh() 方法只能在 EntityManager Session 中使用吗?