Define o asociere cu o singură valoare la o altă clasă de entități care are multiplicitate multiplă la una. În mod normal, nu este necesar să se specifice în mod explicit entitatea țintă, deoarece aceasta poate fi de obicei dedusă din tipul obiectului la care se face referire. În cazul în care relația este bidirecțională, partea entității OneToMany
care nu este proprietară trebuie să utilizeze elementul mappedBy
pentru a specifica câmpul sau proprietatea de relație a entității care este proprietara relației.
Adnotarea ManyToOne
poate fi utilizată în cadrul unei clase încorporabile pentru a specifica o relație de la clasa încorporabilă la o clasă de entități. În cazul în care relația este bidirecțională, partea entității OneToMany
care nu este proprietară trebuie să utilizeze elementul mappedBy
din adnotarea OneToMany
pentru a specifica câmpul sau proprietatea de relație a câmpului sau proprietății încorporabile de pe partea proprietară a relației. Sintaxa de notație punct („.”) trebuie să fie utilizată în elementul mappedBy
pentru a indica atributul de relație din cadrul atributului încorporat. Valoarea fiecărui identificator utilizat cu notația punct este numele câmpului sau proprietății încorporate respective.
Exemplu 1:
@ManyToOne(optional=false) @JoinColumn(name="CUST_ID", nullable=false, updatable=false) public Customer getCustomer() { return customer; }
Exemplu 2:
@Entity public class Employee { @Id int id; @Embedded JobInfo jobInfo; ... } @Embeddable public class JobInfo { String jobDescription; @ManyToOne ProgramManager pm; // Bidirectional } @Entity public class ProgramManager { @Id int id; @OneToMany(mappedBy="jobInfo.pm") Collection manages; }
.