My entity classes:
Order.java
public class Order {
    private int id;
    private Set<OrderLine> lines = new HashSet<OrderLine>();
   // Setters & Getters
}
OrderLine.java
public class OrderLine {
    private OrderLineId id;
    private String name;
    private Order order;
   // Setters & Getters
}
OrderLineId.java
public class OrderLineId implements Serializable{
    private int lineId;
    private int orderId;
    private int customerId;
   // Setters & Getters
}
My mapping file:
<hibernate-mapping>
   <class name="Order" table="TEST_Order">
      <id name="id" type="int" column="id">
         <generator class="native"/>
      </id>
      <set name="lines" cascade="all">
         <key column="orderId"/>
         <one-to-many class="OrderLine"/>
      </set>
   </class>
<class name="OrderLine" table="TEST_OrderLine">
    <composite-id name="id" class="OrderLineId">
        <key-property name="lineId"/>
        <key-property name="orderId"/>
        <key-property name="customerId"/>
    </composite-id>
    <property name="name"/>
    <many-to-one name="order" class="Order"
            insert="false" update="false">
        <column name="orderId"/>
    </many-to-one>
</class>
</hibernate-mapping>
I have created Separate DTO's for Order and OrderLine. Do I need to create a separate DTO for OrderLineId (which is a composite Identifier class as mentioned above) as well ?
