Definiuje jedno-wartościową asocjację do innej klasy encji, która ma krotność many-to-one. Zazwyczaj nie jest konieczne jawne określenie encji docelowej, ponieważ zazwyczaj można ją wywnioskować z typu obiektu, do którego się odwołujemy. Jeśli relacja jest dwukierunkowa, strona podmiotu niebędącego właścicielem OneToMany
musi użyć elementu mappedBy
do określenia pola relacji lub właściwości podmiotu, który jest właścicielem relacji.
Adnotacja ManyToOne
może być użyta wewnątrz klasy wbudowalnej w celu określenia relacji z klasy wbudowalnej do klasy encji. Jeśli relacja jest dwukierunkowa, strona nieposiadająca OneToMany
encji musi użyć elementu mappedBy
adnotacji OneToMany
w celu określenia pola lub właściwości relacji z polem lub właściwością embeddable po stronie posiadającej relacji. Składnia notacji kropki („.”) musi być użyta w elemencie mappedBy
w celu wskazania atrybutu relacji w ramach wbudowanego atrybutu. Wartość każdego identyfikatora użytego z notacją kropkową jest nazwą odpowiedniego wbudowanego pola lub właściwości.
Przykład 1:
@ManyToOne(optional=false) @JoinColumn(name="CUST_ID", nullable=false, updatable=false) public Customer getCustomer() { return customer; }
Przykład 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; }
.