Hibernate:在分离状态下更改对象后的持久性

时间:2013-08-02 15:49:54

标签: java hibernate persistence

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

我有什么:

与一对多关联的两个实体: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();

1 个答案:

答案 0 :(得分:1)

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