如何使用spring/hibernate在单个事务中保存一个父实体和多个子实体

如何使用spring/hibernate在单个事务中保存一个父实体和多个子实体,hibernate,spring-boot,spring-data-jpa,Hibernate,Spring Boot,Spring Data Jpa,我正在从事一个项目,其中我有一个父实体和多个子实体 e、 g:` 父实体->员工,子实体->员工地址, 员工联系等 我的问题是,在单一保存方法中,这样保存关系的行业标准是什么。因为我希望员工id出现在所有子实体中。 hibernate是否为这些场景提供了任何解决方案,或者我们是否必须在创建父实体后手动设置外键,然后保存子实体 谢谢。Hibernate有OneToMany注释用于保存和选择父类。让我们创建如下关系: @Entity public class Employee{ @Id p

我正在从事一个项目,其中我有一个父实体和多个子实体 e、 g:`

父实体->员工,子实体->员工地址, 员工联系等

我的问题是,在单一保存方法中,这样保存关系的行业标准是什么。因为我希望
员工id
出现在所有子实体中。 hibernate是否为这些场景提供了任何解决方案,或者我们是否必须在创建父实体后手动设置外键,然后保存子实体


谢谢。

Hibernate
OneToMany
注释用于保存和选择父类。让我们创建如下关系:

@Entity
public class Employee{

  @Id
  private int id;

  private String fullName;

  private double salary;

  @OneToMany(cascade = CascadeType.ALL)
  @JoinColumn(name = "employee_id")
  private List<Contact> contacts;
}

@Entity
public class Contact{

   @Id
   private int id;

   private String phoneNumber;

   private String address;

}
@实体
公营雇员{
@身份证
私有int-id;
私有字符串全名;
私人双薪;
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“employee\u id”)
私人名单联系人;
}
@实体
公共类联系人{
@身份证
私有int-id;
私有字符串电话号码;
私有字符串地址;
}
保存方法:

public void save(){
  Employee employee = new Employee();
  employee.setFullName("John Smith");
  employee.setSalaru(5000);

  Contact contact1 = new Contact("+19874561232","Wall Street 10"); 
  Contact contact2 = new Contact("+11234561232","Green Street 10");
  List<Contact> contacts = new ArrayList();
  contacts.add(contact1);
  contacts.add(contact2);
  employee.setContacts(contacts);

  session.save(employee);
}
public void save(){
员工=新员工();
雇员。setFullName(“约翰·史密斯”);
雇员:setSalaru(5000);
Contact contact1=新联系人(“+19874561232”,“华尔街10”);
触点2=新触点(“+11234561232”,“绿色街10”);
列表联系人=新建ArrayList();
联系人。添加(联系人1);
联系人。添加(联系人2);
employee.setContacts(contacts);
session.save(员工);
}

如果您的关系是双向的,请设置“同步关系的双方”并保存所属方(您的
员工
?)。您必须设置
cascade
选项以级联父级的持久化操作。您能否给出一个示例,以便更清楚地说明。也许能帮你,不仅仅是冬眠。所有JPA提供商都允许通过*toOne和*ToMany关系建立父子关系。你可以在网上搜索任何东西。当您对示例代码有问题时,请使用此论坛。