Функция «многие ко многим» работает только на столе без дополнительных свойств.
Это потому, что многие-ко-многим представляет коллекцию предметов внутри другого объекта.
Если в вашей таблице ModuleVariable нет других столбцов, вы можете использовать так:
<bag name="Modules" table="MODULE_VARIABLE" cascade="save-update" lazy="true" >
<key>
<column name="Variable_Id" not-null="true"/>
</key>
<many-to-many class="Module">
<column name="Module_Id" not-null="true"/>
</many-to-many>
</bag>
А в вашем домене классы:
public IList Modules { get; set; }
А для использования нужно добавить модули:
variable.Modules.Add(module);
Надежды на помощь.