Pudes utilizar un mapeo de la forma:
<class name="Order" table="orders">
<id name="id">
<generator class="native"/>
</id>
<property name="date"/>
<many-to-one name="customer" column="customer_id"/>
<list name="lineItems" table="line_items">
<key column="order_id"/>
<list-index column="line_number"/>
<composite-element class="LineItem">
<property name="quantity"/>
<many-to-one name="product" column="product_id"/>
</composite-element>
</list>
</class>
que utiliza un composite-element para representar una entidad intermedia.
El ejemplo que te muestro esta en:
Capitulo: 23.3. Customer/Order/Product (Ejemplos)
http://www.hibernate.org/hib_docs/v3...ample-mappings