entitymanager(持久性上下文)自动刷新实体

kuarbcqp  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(209)

因此,我们在@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会自动刷新它的实体,但我不知道什么时候或者为什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题