使用列表和连接表进行一对多映射

时间:2012-01-17 05:19:17

标签: hibernate mapping

我使用连接表为List使用一对多映射。 有很多例子可以使用集合而不是列表来使用此映射。

考虑表:

Table Ticket
{
ticketid int PK;
...
}

Table Attachment
{
attachmentid int PK;
...
}

加入表格:

Ticket_Attachment_Join
{
tid  FK (ref to Ticket.ticketid)
aid PK FK(ref to Attachment.attachmentid)
}

映射: Ticket.hbm.xml:

    <hibernate-mapping>
    <class name="Tickets" table="Ticket">
    ...
    <list name="attachmentsList" table="Ticket_Attachment_Join" cascade="save-update">
            <key column="ticketid"/>
           <list-index column="index_col"/>
            <many-to-many column="attachmentId" unique="true" class="Attachments" />
    </list>

...
</class>
</hibernate-mapping>

我想问一下,我应该在哪个表中添加 index_col <list-index...>列)?在附件表或连接表中?是否需要将index_col放在表中列表的列表中(此处为'附件'表)。

1 个答案:

答案 0 :(得分:0)

它应该在Ticket_Attachment_Join上,因为它是您在列表映射中引用的表。

 <list name="attachmentsList" table="Ticket_Attachment_Join" 
                                      cascade="save-update">

如果您不需要任何索引收藏集,则可以使用attachmentsList映射<bag>,然后根本不需要<list-index column="index_col"/>映射。