Не уверен, что он будет работать с наблюдаемой коллекцией (возможно, потребуется отобразить как IList и обработать это за кулисами), но я думаю, что вам нужно сделать что-то подобное в вашем отображении:
<class name="Lead" table="Lead">
<!-- snip -->
<set name="Tags" table="Tags">
<key column="TagId" />
<element column="TagValue" type="string" />
</set>
</class>
Единственным недостатком является то, что для значений тегов требуется таблица с ключами.
Однако я беспокоюсь, что один и тот же тег может появляться в нескольких отведениях.Если это так, я думаю, вы захотите определить теги как многие ко многим с промежуточной таблицей.Это будет выглядеть примерно так (требуется объект для вашего тега):
<class name="Lead" table="Lead">
<!-- snip -->
<set name="Tags" table="LeadsXTags" lazy="false" fetch="select" cascade="save-update">
<key column="LeadId"></key>
<many-to-many class="Tag" column="TagId"></many-to-many>
</set>
</class>