Java 在子实体中更新或插入新行

Java 在子实体中更新或插入新行,java,sql,spring,hibernate,jpa,Java,Sql,Spring,Hibernate,Jpa,我有两个实体,一个父实体和多个子实体。子表具有父表的外键。我的问题是更新或插入新行 我从前端收到一个包含信息的bean列表,根据每个bean中的一个值,如果子表中存在具有该值的子表(需要更新多个列),我需要更新一行,如果不存在,则需要插入一个新行 除了从父实体获取子实体列表并进行双for循环样式匹配之外,还有更好的方法吗?在这里,我将把每个子实体值与列表中的每个bean相匹配,如果有匹配,则是更新,否则是插入 在这种情况下,Hibernate做了正确的事情,因为没有id,所以它一直在添加行。谢谢

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

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

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


在这种情况下,Hibernate做了正确的事情,因为没有id,所以它一直在添加行。谢谢

您可以提取包含与子实体相关的所有bean的子列表,然后获取并更新它们。 然后提取与需要创建的子项相关的所有bean的子列表,并插入新实体。
如果您的env是java8,那么这可能是一种功能更强大、更可行(也更容易)的方法

您可以提取包含与子实体相关的所有bean的子列表,然后获取并更新它们。 然后提取与需要创建的子项相关的所有bean的子列表,并插入新实体。
如果您的env是java8,那么这可能是一种功能更强大、更可行(也更容易)的方法

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