我遇到了在分离状态下更改持久对象的问题。此类更改确实会影响服务器中的某些对象,但由于某种原因不会影响对象在数据库中的映射。
我有什么:
与一对多关联的两个实体:Profile->文件。我有文件列表的配置文件,我尝试添加新文件。
问题:
我首先清理配置文件的文件列表(在II部分中),然后我将新文件添加到配置文件(在III部分中)。毕竟,DB中的包含所有文件,包括profile.getFileList()删除的文件.clear();
问题:
为什么毕竟我有DB旧文件,如果我继续profile.getFileList()。clear()?
我的代码:
//I. pull the profile from BD
Session session = sessionFactory.openSession();
Profile existingProfile = (Profile) session.get(Profile.class, profileId);
session.close();
//II. make the copy of profile, out of the session scope, and clear file list of it
String serializedProfile = convertToJson(profile);
profile = Utils.jsonToObject(serializedProfile , Profile.class);
profile.getFileList(); // not empty!
profile.getFileList().clear();
//III. add new files to profile's file list
Session session1 = sessionFactory.openSession();
session1.beginTransaction();
profiles.getFileList().addAll(additionalFileList);
session1.saveOrUpdate(profile);
session1.getTransaction().commit();
session1.close();
答案 0 :(得分:1)
II段是否在会话范围内,为什么在清除FileList之前调用convertToJson(profile)