因此,我们在@service类中有两个方法:
public Comment addComment() {
Comment comment = new Comment("comment about city");
City city = new City("Belgrade", "Serbia", "Noice");
comment.setCity(city);
cityRepository.addCity(city);
commentRepository.addComment(comment);
cityRepository.refresh(city);
city = cityRepository.findCityById(city.getId());
System.out.println("addComment() -> " + city);
return comment;
}
public City getCity(int id) {
City cityToBurn = cityRepository.findCityById(id);
System.out.println("getCity() -> " + cityToBurn);
return cityToBurn;
}
第一次和第二次打印将为我们提供:
城市(id=1,name=贝尔格莱德,country=塞尔维亚,description=noice,comments=[注解[id=1,description=comment about city,timecreated=2020-11-27 08:50:12.639,timemodified=null]])
但是,没有行cityrepository.refresh(城市);第一次打印将提供:
城市(id=1,name=belgrad,country=serbia,description=noice,comments=[]),第二次打印将保持不变:
城市(id=1,name=贝尔格莱德,country=塞尔维亚,description=noice,comments=[注解[id=1,description=comment about city,timecreated=2020-11-27 08:50:12.639,timemodified=null]])
所以我的问题是,entitymanager是否(以及何时)自动刷新他的实体?
首先我认为它可能与内存有关,因为在addcomment()的作用域中,我们有对id为的对象的city引用,它的持久化对象,所以当我们调用id为的city对象时,entitymanager从内存返回对象。然后我创建city(和comment)引用类引用,这样一旦addcomment()方法完成,它们就不会被删除,但结果保持不变。所以,我猜entitymanager会自动刷新它的实体,但我不知道什么时候或者为什么?
暂无答案!
目前还没有任何答案,快来回答吧!