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

时间:2018-07-25 06:01:21

标签: hibernate spring-boot spring-data-jpa

我正在一个项目中,我有一个父实体和多个子实体 例如:`

  

父实体->雇员和子实体-> EmployeeAddress,   EmployeeContact等。

我的问题是用单一保存方法保存这种关系的行业标准是什么?因为我希望employee-id出现在所有子实体中。 休眠状态是否可以为这些情况提供任何解决方案,还是我们必须在创建父实体之后手动设置外键,然后保存子实体。

谢谢。

1 个答案:

答案 0 :(得分:1)

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;

}

保存方法:

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);
}

You can learn more about OneToMany.