当前位置: 首页 > 知识库问答 >
问题:

CrudRepository save函数更新已删除的实体

范福
2023-03-14
user: {
    name: 'John Smith',
    profile: {
        experience: [
            {
                job: 'Google',
                role: 'System admin'
            },
            {
                job: 'Apple',
                role: 'Platform manager'
            }
        ]
    }
}

现在,在我的代码中,如果我更改名称并添加一个体验,然后点击save按钮,CrudRepository的save函数通过保存user对象来解决这个问题,因为我的所有项目都与注释@OneToOne、@OneToMany和@ManyToOne连接。

我的问题是,如果我换个名字,增加一个经验,去掉另一个经验怎么办?CrudRepository中的save函数不将从frontend来的对象中删除的实体视为DTO转换为JPA。

我希望我的用户能够编辑他们的配置文件页面,如他们想要的,意思是:改变状态,添加项目或删除项目。然后点击save按钮,用户对象将被另存为新编辑的用户对象。

我希望这有任何意义。

谢谢

共有1个答案

宗政法
2023-03-14

您应该创建一个单独的restfulendpoint来管理体验条目:

  • 发布/用户/1/体验-创建新的体验条目
  • 删除/users/1/experiences/1-从用户中删除体验条目
  • put/patch/post(无论需要什么)/users/1/experiences/1-更新体验条目

您可以这样管理它,或者如果您希望在每次保存用户时坚持使用您所拥有的内容,那么您应该从数据库中删除他们的所有经验条目,并用DTO中的新数据替换。会让你的生活轻松多了。

 类似资料:
  • 利用UPDATE和DELETE语句进行操作表数据。 更新数据 UPDATE用来更新修改表中的数据 更新表中特定的行 更新表中所有行 注意: 如果省略了WHERE子句,就会更新所有行。 UPDATE语句有三个部分组合 要更新的表 列名和他们的新值 确定要更新哪些行的过滤条件 mysql> UPDATE Customers -> SET cust_email = '[email protect

  • 我在我的react本地应用程序中使用Firebase实时数据库。大多数事情都是通过REST API云函数来完成的。app中很少东西直接使用实时数据库。最近,我发现我数据库中的所有数据都被莫名其妙地删除了。甚至数据库中不再使用且未在我的应用程序/云功能的源代码中引用的部分也消失了。 问题发生在两个项目及其数据库(生产/测试)中。我必须使用备份来恢复它们,但即使没有人使用应用程序(例如,在测试环境中)

  • 插入、更新和删除语句基于以开头的层次结构生成 UpdateBase . 这个 Insert 和 Update 构建基于中介的 ValuesBase . DML基础构造函数 顶级的“插入”、“更新”、“删除”构造函数。 Object Name Description delete(table[, whereclause, bind, returning, ...], **dialect_kw) 构建

  • 我使用以下方法根据某个 where 条件删除一组对象,但实际上删除的对象数可能小于传递的集合。如何获取已删除实体的实际计数 http://docs . spring . io/spring/docs/2.5 . x/API/org/spring framework/ORM/hibernate 3/hibernate template . html # delete all(Java . util

  • 我正在运行一个Yii2应用程序。今天我遇到了一个问题,至少有250个条目的整个表都是空的。该表由文件信息条目(原始文件名、新文件名)组成。因此,每个条目在逻辑上都链接到文件系统中的一个文件。我检查了文件系统的文件,发现文件也被删除了。因此,我得出结论,数据在yii2应用程序中被删除。我有一个操作将被调用(POST)来删除一个条目。 我为它做了一种通用函数: 在视图中,我有一个带有操作列的文件附件列

  • 我已经创建了一个用于创建/更新/删除用户聊天消息的工作方法。我在想有没有办法减少我的逻辑。 多行可读性