@Entity
public class Company {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "company_id_ref", referencedColumnName = "company_id")
private List<Branch> branches;
...
}
Die folgenden Hibernate-Protokolle werden angezeigt
Hibernate: select nextval ('hibernate_sequence')
Hibernate: select nextval ('hibernate_sequence')
Hibernate: insert into company (name, company_id) values (?, ?)
Hibernate: insert into branch (company_id_ref, name, id) values (?, ?, ?)
Hibernate: update branch set company_id_ref=? where id=?
Und
@Entity
public class Company {
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY,
mappedBy = "company")
private List<Branch> branches;
...
}
Dies führt zu folgenden Hibernate-Protokollen
Hibernate: select nextval ('hibernate_sequence')
Hibernate: select nextval ('hibernate_sequence')
Hibernate: insert into company (name, company_id) values (?, ?)
Hibernate: insert into branch (company_id_ref, name, id) values (?, ?, ?)
Wir können deutlich sehen, dass @joinColumn
wird zusätzliche Aktualisierungsabfragen verursachen. Sie müssen also die übergeordnete Entität nicht explizit auf die untergeordnete Entität setzen, Das müssen wir tun, wenn wir mappedBy
Kinder mit einem Elternteil zu retten