【问题标题】:adding child entities in oneToMany single sided join table在 oneToMany 单面连接表中添加子实体
【发布时间】:2015-01-04 17:02:47
【问题描述】:

我的实体喜欢..

@Entity
public class parent{
@id
private string id;
private string name;
@OneToMAny
List<Child> children = new ArrayList<Child>();

//getters n setters
}  

保存父母后,如果我想添加孩子,那么我需要这样做

Parent parent = parentRepository.findOne(parentId);     
if(parent != null){
      parent.getChildren().add(new Child("Id","name"));
}

如我们所见,我需要先通过 parent.getChildren() 获取所有子项,然后添加一个新的,假设我在子表中有批量记录,这是添加子项的适当方式吗? 有什么好的方法可以添加新的孩子。 我不能使用 oneToMAny mapped By here,因为还有一些实体与子列表拥有相同的子实体(Child),所以我不能通过添加外键列来修改我的子实体,我只能使用 joinTable。我正在使用 jpa+Spring+Hibernate

【问题讨论】:

  • 您无法添加外键这一事实并不能阻止您进行双向关联。您只需使用 @JoinTable 对其进行映射,告诉 JPA 您需要一个连接表而不是连接列。
  • 感谢您的评论,我不知道我们也可以在 ManyToOne 端指定 JoinTable。

标签: hibernate jpa spring-data


【解决方案1】:

你的问题不是很清楚:/但据我了解:

一个父母有很多孩子。一个孩子有多个父母。

这是一个多对多的关系。

你可以这样做:

实体:父、子、父子

  • Parent = ParentChild 类型的 OneToMany
  • 子 = 父子类型的 OneToMany
  • ParentChild = 父子类型的 ManyToOne

您可以单独保留 ParentChild 而无需获取列表。

或者你可以有一个递归表。

  • Person : ManyToOne of his parent。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 2011-01-28
    相关资源
    最近更新 更多