L'annotation mappedBy , idéalement, devrait toujours être utilisé dans le Parent du côté de l'Entreprise (classe) de la bi directionnelle de la relation, dans ce cas, il devrait être dans la Société de classe, pointant à la variable de membre de "l'entreprise" de l'Enfant de la classe (Direction générale de la classe)
L'annotation @JoinColumn est utilisé pour spécifier une colonne mappés pour rejoindre une entité association, cette annotation peut être utilisée dans n'importe quelle classe (Parent ou Enfant), mais idéalement, il devrait être utilisé que dans un seul côté (soit dans la classe parent ou de l'Enfant de la classe pas dans les deux), ici, dans ce cas, je l'ai utilisé chez l'Enfant de côté (Direction générale de la classe) de la bi relation directionnelle indiquant la clé étrangère dans la Direction de la classe.
ci-dessous l'exemple de travail :
classe parent , Société
@Entity
public class Company {
private int companyId;
private String companyName;
private List<Branch> branches;
@Id
@GeneratedValue
@Column(name="COMPANY_ID")
public int getCompanyId() {
return companyId;
}
public void setCompanyId(int companyId) {
this.companyId = companyId;
}
@Column(name="COMPANY_NAME")
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="company")
public List<Branch> getBranches() {
return branches;
}
public void setBranches(List<Branch> branches) {
this.branches = branches;
}
}
enfant de la classe, de la Direction générale
@Entity
public class Branch {
private int branchId;
private String branchName;
private Company company;
@Id
@GeneratedValue
@Column(name="BRANCH_ID")
public int getBranchId() {
return branchId;
}
public void setBranchId(int branchId) {
this.branchId = branchId;
}
@Column(name="BRANCH_NAME")
public String getBranchName() {
return branchName;
}
public void setBranchName(String branchName) {
this.branchName = branchName;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="COMPANY_ID")
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
}