【发布时间】: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