Annotation Interface ManyToOne


@Target({METHOD,FIELD}) @Retention(RUNTIME) public @interface ManyToOne
Specifies a single-valued association to another entity class that has many-to-one multiplicity. It is not usually necessary to specify the target entity explicitly since it can usually be inferred from the type of the object being referenced.

If the relationship is bidirectional, the non-owning OneToMany entity side must use the mappedBy element to specify the relationship field or property of the entity that is the owner of the relationship.

A ManyToOne association usually maps a foreign key column or columns. This mapping may be specified using the JoinColumn annotation. Alternatively, an optional OneToOne association is sometimes mapped to a join table using the JoinTable annotation.

The ManyToOne annotation may be used within an embeddable class to specify a relationship from the embeddable class to an entity class. If the relationship is bidirectional, the non-owning OneToMany entity side must use the mappedBy element of the OneToMany annotation to specify the relationship field or property of the embeddable field or property on the owning side of the relationship. The dot (.) notation syntax must be used in the mappedBy element to indicate the relationship attribute within the embedded attribute. The value of each identifier used with the dot notation is the name of the respective embedded field or property.

Example 1:

@ManyToOne(optional = false)
@JoinColumn(name = "CUST_ID", nullable = false, updatable = false)
public Customer getCustomer() { return customer; }

Example 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<Employee> manages;
}
Since:
1.0