做一个项目需求,想插入和修改。
session.merge(studentUser);
session.saveOrUpdate(languageGrade);
session.saveOrUpdate(englishGrade);
session.saveOrUpdate(mathematicsGrade);
session.beginTransaction().commit();
使用Test测试的时候,发现可以修改。但是启动服务使用SoapUI测试的时候发现可以插入新的,但是无法修改,有点莫名其妙
但是每次重启服务之后再用soapUI修改数据我发现又可以修改(原因是关闭重新打开了一个新的session,缓存清空了)。
我反应过来可能是因为session缓存的问题,于是使用clear清除缓存。果然成功了
session.merge(studentUser);
session.saveOrUpdate(languageGrade);
session.saveOrUpdate(englishGrade);
session.saveOrUpdate(mathematicsGrade);
session.beginTransaction().commit();
//一开始不清除缓存是无法修改的,会报:(A different object with the same identifier value was already associated with the session :
// [org.example.entity.StudentUser#65)的错误,是因为session中有原先这个id对象的缓存,相同id其他不同的对象无法加入,所以需要清楚一下缓存
session.clear();