0

我遇到了与在分离状态下更改持久对象相关的问题。此类更改确实会影响服务器中的某些对象,但由于某种原因不会影响对象在数据库中的映射。

我有的:

与一对二多关联链接的两个实体:配置文件->文件。我有文件列表的配置文件,我尝试向其中添加新文件。

什么问题:

我首先清理配置文件的文件列表(在 II 部分),然后将新文件添加到配置文件(在 III 部分)。毕竟,在数据库中,我拥有所有文件,包括被 profile.getFileList().clear() 删除的文件

问题:

如果我继续 profile.getFileList().clear(),为什么我毕竟在 DB 旧文件中?

我的代码:

//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();
4

1 回答 1

1

II-部分是否在会话范围内,为什么在清除 FileList 之前调用 convertToJson(profile)

于 2013-08-02T16:30:29.517 回答