Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/Examples/JPA/2.0/OrderColumns
Contents
How to maintain order in a List relationship using an OrderColumn
JPA 2.0 adds support for an OrderColumn
. An OrderColumn
can be used to define an order List
on any collection mapping. It is defined through the @OrderColumn
annotation or <order-column>
XML element.
The OrderColumn
is maintained by the mapping and should not be an attribute of the target object. The table for the OrderColumn
depends on the mapping. For a OneToMany
mapping it will be in the target object's table. For a ManyToMany
mapping or a OneToMany
using a JoinTable
it will be in the join table. For an ElementCollection
mapping it will be in the target table.
Example of a collection order column database
EMPLOYEE (table)
ID | FIRSTNAME | LASTNAME | SALARY |
1 | Bob | Way | 50000 |
2 | Sarah | Smith | 60000 |
EMPLOYEE_PHONE (table)
EMPLOYEE_ID | PHONE_ID | INDEX |
1 | 1 | 0 |
1 | 3 | 1 |
2 | 2 | 0 |
2 | 4 | 1 |
PHONE(table)
ID | AREACODE | NUMBER |
1 | 613 | 792-7777 |
2 | 416 | 798-6666 |
3 | 613 | 792-9999 |
4 | 416 | 798-5555 |
Example of a collection order column annotation
@Entity public class Employee { @Id private long id; ... @OneToMany @OrderColumn(name="INDEX") private List<Phone> phones; ... } @Entity public class Phone { private int index = 0; }
Example of a collection order column XML
<entity name="Employee" class="org.acme.Employee" access="FIELD"> <attributes> <id name="id"/> <one-to-many name="phones"> <order-column name="INDEX"/> </one-to-many> </attributes> </entity>