Вы сказали
тогда как версия с set работает нормально
Вот список DOCTYPE
<!ELEMENT list (
meta*,
subselect?,
cache?,
synchronize*,
comment?,
key,
(index|list-index),
(element|one-to-many|many-to-many|composite-element|many-to-any),
loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,
filter*
)>
Как видите, элемент списка нуждается в элементе index или list-index , ключевом элементе и одном из следующих
- элемент
- один-ко-многим
- многие-ко-многим
- композит-элемент
- многие к любой
А вот и список-индекс DOCTYPE
<!-- Declares the type and column mapping for a collection index (array or list index, or key of a map). -->
<!ELEMENT list-index (column?)>
<!ATTLIST list-index column CDATA #IMPLIED>
<!ATTLIST list-index base CDATA "0">
Так что вы должны использовать
<list name="columns">
<key column="template_id" not-null="true"/>
<list-index column="WHICH COLUMN SHOULD BE USED AS INDEX"/>
<one-to-many class="SpreadsheetImportTemplateColumn" />
</list>
Но если вы хотите использовать список вместо набора и не имеете столбца индекса списка , вы можете использовать сумку вместо этого. Инициализируйте следующим образом
Collection<SpreadsheetImportTemplateColumn> columns = new ArrayList<SpreadsheetImportTemplateColumn>();
И вместо этого определить это отображение
<bag name="columns">
<key column="template_id" not-null="true"/>
<one-to-many class="SpreadsheetImportTemplateColumn"/>
</bag>