# One-to-many mapping

Use a One-to-Many Mapping to define a relationship with one-to-many multiplicity.

1. In the JPA Structure view, select the field to map.

2. Right-click the field and then select Map As > One-to-many. The JPA Details view (for attributes) displays the properties for the selected.

3. Use this table to complete the General information fields JPA Details view.

   Property | Description | Default
   --- | --- | ---
   Mapping Entity Type Hyperlink | Defines mapping as One-to-Many. This corresponds to the `@OneToMany` annotation. | One-to-Many
   Target Entity | The entity to which this attribute is mapped. |
   Cascade | See "Cascade Type" for details. Default All Persist Merge Remove |
   Fetch | Defines how data is loaded from the database. See "Fetch Type" for details. Eager Lazy | Eager
   Mapped By | The database field that owns the relationship. |
   Order By | Specify the default order for objects returned from a query. See "Order By" for details. No ordering Primary key Custom | No ordering

4. Use this table to complete the Join Table Information fields in the JPA Details view.

   Property | Description | Default
   --- | --- | ---
   Name | Name of the join table | By default, the name is assumed to be the primary tables associated with the entities concatenated with an underscore.
   Join Columns | Specify two or more join columns (that is, a primary key). |
   Inverse Join Columns | The join column on the owned (or inverse) side of the association: the owned entity's primary key column. |

Eclipse adds the following annotations to the field:

    @OneToMany(targetEntity=<TARGET_ENTITY>)
    @Column(name="<COLUMN>")

    @OneToMany(targetEntity=<TARGET_ENTITY>.class, cascade=CascadeType.<CASCADE_TYPE>,
        fetch = FetchType.<FETCH_TYPE>, mappedBy = "<MAPPED_BY>")@OrderBy("<ORDER_BY>")
    @JoinTable(name="<JOIN_TABLE_NAME>", joinColumns=@JoinColumn(name=
        "<JOIN_COLUMN_NAME>", referencedColumnName="<JOIN_COLUMN_REFERENCED_COLUMN>"),
        inverseJoinColumns=@JoinColumn(name="<INVERSE_JOIN_COLUMN_NAME>",
        referencedColumnName="<INVERSE_JOIN_COLUMN_REFERENCED_COLUMN>"))

Mapping an entity

JPA Structure view
JPA Details view (for attributes)

Understanding OR mappings
Understanding EJB 3.0 Java Persistence API