2020-04-16

Hibernate JPA @OrderColumn Example

@OrderColumn

The @OrderColumn annotation is used to specify that the current annotation collection order should be materialized in the database.

OrderColumn specifies a column that is used to maintain the persistent order of a list. The persistence provider is responsible for maintaining the order upon retrieval and in the database. The persistence provider is responsible for updating the ordering upon flushing to the database to reflect any insertion, deletion, or reordering affecting the list.
The OrderColumn annotation is specified on a OneToMany or ManyToMany relationship or on an element collection. The OrderColumn annotation is specified on the side of the relationship that references the collection that is to be ordered. The order column is not visible as part of the state of the entity or embeddable class.

The OrderBy annotation should be used for ordering that is visible as persistent state and maintained by the application. The OrderBy annotation is not used when OrderColumn is specified.

The order column must be of integral type. The persistence provider maintains a contiguous (non-sparse) ordering of the values of the order column when updating the association or element collection. The order column value for the first element is 0.


    Example:

    @Entity
    public class CreditCard {

       @Id long ccNumber;

       @OneToMany  // unidirectional
       @OrderColumn
       List<CardTransaction> transactionHistory;
       ...
    }


Unidirectional @OrderColumn list

@OneToMany(cascade = CascadeType.ALL)
@OrderColumn(name = "order_id")
private List<Phone> phones = new ArrayList<>();

No comments:

Post a Comment