gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:17:12 25 4
gpt4 key购买 nike

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

我拥有的:

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

问题是什么:

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

问题:

为什么我在数据库中有旧文件,如果我继续 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();

最佳答案

II 部分是否在 session 范围内?为什么要在清除 FileList 之前调用 ConvertToJson(profile)

关于java - Hibernate:在分离状态下更改对象后的持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com