A one to many association links the tables of two classes via a foreign key, with no intervening collection table. This mapping loses certain semantics of normal Java collections:
An instance of the contained entity class may not belong to more than one instance of the collection
An instance of the contained entity class may not appear at more than one value of the collection index
An association from
Part requires existence of a foreign key column and possibly an index column to the
Part table. A
<one-to-many> tag indicates that this is a one to many association.
class (required): The name of the associated class.
not-found (optional - defaults to
exception): Specifies how cached identifiers that reference missing rows will be handled:
ignore will treat a missing row as a null association.
entity-name (optional): The entity name of the associated class, as an alternative to
Notice that the
<one-to-many> element does not need to declare any columns. Nor is it necessary to specify the
table name anywhere.
Very important note: If the foreign key column of a
<one-to-many> association is declared
NOT NULL, you must declare the
not-null="true" or use a bidirectional association with the collection mapping marked
inverse="true". See the discussion of bidirectional associations later in this chapter.
This example shows a map of
Part entities by name (where
partName is a persistent property of
Part). Notice the use of a formula-based index.
<key column="productId" not-null="true"/>