2.4.6. Collection related annotations
2.4.6.1. Enhance collection settings
It is possible to set
- the batch size for collections using @BatchSize
- the where clause, using @Where (applied on the target entity) or @WhereJoinTable (applied on the association table)
- the check clause, using @Check
- the SQL order by clause, using @OrderBy
- the delete cascade strategy through @OnDelete(action=OnDeleteAction.CASCADE)
- the collection immutability using @Immutable: if set specifies that the elements of the collection never change (a minor performance optimization in some cases)
- a custom collection persister (ie the persistence strategy used) using
@Persister
: the class must implementorg.hibernate.persister.collectionCollectionPersister
You can also declare a sort comparator. Use the
@Sort
annotation. Expressing the comparator type you want between unsorted, natural or custom comparator. If you want to use your own comparator implementation, you'll also have to express the implementation class using the comparator
attribute. Note that you need to use either a SortedSet
or a SortedMap
interface.
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) @JoinColumn(name="CUST_ID") @Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class) @Where(clause="1=1") @OnDelete(action=OnDeleteAction.CASCADE) public SortedSet<Ticket> getTickets() { return tickets; }
Please refer to the previous descriptions of these annotations for more informations.
Foreign key constraints, while generated by Hibernate, have a fairly unreadable name. You can override the constraint name by use
@ForeignKey
. Note that this annotation has to be placed on the owning side of the relationship, inverseName
referencing to the other side constraint.
@Entity
public class Woman {
...
@ManyToMany(cascade = {CascadeType.ALL})
@ForeignKey(name = "TO_WOMAN_FK", inverseName = "TO_MAN_FK")
public Set<Man> getMens() {
return mens;
}
}
alter table Man_Woman add constraint TO_WOMAN_FK foreign key (woman_id) references Woman
alter table Man_Woman add constraint TO_MAN_FK foreign key (man_id) references Man