代码之家  ›  专栏  ›  技术社区  ›  Shafqat Shafi

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

  •  -1
  • Shafqat Shafi  · 技术社区  · 7 年前

    我在做一个有父实体和多个子实体的项目 例如:`

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

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

    谢谢您。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Afsun Khammadli    7 年前

    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.