Define una asociación de un solo valor a otra clase de entidad que tiene multiplicidad de muchos a uno. Normalmente no es necesario especificar la entidad de destino explícitamente ya que normalmente se puede deducir del tipo del objeto al que se hace referencia. Si la relación es bidireccional, el lado de la entidad no propietaria OneToMany
debe utilizar el elemento mappedBy
para especificar el campo de relación o la propiedad de la entidad propietaria de la relación.
La anotación ManyToOne
puede utilizarse dentro de una clase integrable para especificar una relación desde la clase integrable a una clase de entidad. Si la relación es bidireccional, el lado de la entidad no propietaria OneToMany
debe utilizar el elemento mappedBy
de la anotación OneToMany
para especificar el campo o la propiedad de relación del campo o la propiedad incrustada en el lado propietario de la relación. La sintaxis de notación de punto («.») debe utilizarse en el elemento mappedBy
para indicar el atributo de relación dentro del atributo incrustado. El valor de cada identificador utilizado con la notación de punto es el nombre del respectivo campo o propiedad incrustado.
Ejemplo 1:
@ManyToOne(optional=false) @JoinColumn(name="CUST_ID", nullable=false, updatable=false) public Customer getCustomer() { return customer; }
Ejemplo 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; }