If by List, you mean that you want to maintain an order then use Use "List". If you don't need to maintain order use Set.
Note index element with column attribute.
The mapping file below is used to create a Flight object with a "list" of Airport (Leg) objects.
Code:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.xxxx.wab.entities.masterflight.MasterFlightImpl" table="MasterFlight" lazy="false">
<id name="id" column="id" type="integer" unsaved-value="0">
<generator class="native">
</generator>
</id>
<version name="ver" column="ver" type="integer"/>
<property name="airlineDesignator" column="airlineDesignator" index="idxFlight" type="string" length="3" not-null="true" lazy="false"/>
<property name="flightNumber" column="flightNumber" index="idxFlight" type="integer" length="4" not-null="true" lazy="false"/>
<property name="operationalSuffix" column="operationalSuffix" index="idxFlight" type="string" length="1" not-null="false" lazy="false"/>
<property name="flightDate" column="flightDate" index="idxFlight" type="date" not-null="true" lazy="false"/>
<property name="lastUpdate" column="lastUpdate" type="timestamp" not-null="false" lazy="false"/>
<property name="emergencyLock" column="emergencyLock" type="boolean" length="1" not-null="false" lazy="false"/>
<property name="scheduleChange" column="scheduleChange" type="boolean" length="1" not-null="false" lazy="false"/>
<many-to-one name="subscriber" cascade="lock" column="Subscriberid" index="idxFlight" class="com.xxxx.wab.entities.airline.SubscriberImpl" not-null="true" lazy="false">
</many-to-one>
<list name="MasterFlightLegs" lazy="false" cascade="save-update,lock" inverse="false">
<key column="MasterFlightid" not-null="true"/>
<index column="MasterFlightIndex" type="integer"/>
<one-to-many class="com.xxxx.wab.entities.masterflight.MasterFlightLegImpl"/>
</list>
</class>
</hibernate-mapping>