【问题标题】:Updating or inserting new row in child entity在子实体中更新或插入新行
【发布时间】:2017-09-20 18:23:49
【问题描述】:

我有两个实体,一个父实体和多个子实体。子表具有父表的外键。我的问题来自更新或插入新行。

我从前端收到包含信息的 bean 列表,并且基于每个 bean 中的值,如果子表中存在具有该值的子表(其中有多个列需要更新),我需要更新一行如果不存在则插入新行。

除了从父实体获取子实体列表并进行双for循环样式匹配之外,还有更好的方法吗?在这里,我会将每个子实体值与列表中的其他 bean 进行匹配,如果匹配,则为更新,否则为插入。

在这种情况下,Hibernate 做了正确的事情,因为没有 id,它不断添加行。谢谢!

【问题讨论】:

  • 太模糊了。发布您的代码而不是描述它。还要定义“更好”的含义。它可以是很多事情:更简洁、更高效、更少的请求等等。
  • 使用集合而不是列表,实现equals和hash?
  • 需要一些代码来帮助理解您想要实现的目标。 Hibernate 可以通过多种方式进行配置,并且有多种方式可以将 Parent-Child 保存到数据库中。您可以选择 saveorupdate(object) 或 save(object) 或在休眠一对多映射期间设置 Cascade

标签: java sql spring hibernate jpa


【解决方案1】:

您可以提取包含与子实体相关的所有 bean 的子列表,然后获取并更新它们。 然后为所有与需要创建的子项相关的 bean 提取一个子列表并插入新实体。 如果您的环境是 java 8,这可能是一种更实用、更可行(也更容易)的方法。

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多