リストを使用して、多くのマッピングが機能しますが、セットではありませんか?
-
01-10-2019 - |
質問
気にして申し訳ありません - おそらくこれは非常に簡単な質問です - しかし、何らかの理由で以下のバージョンは解析されませんが、セットのあるバージョンは正常に動作します。実際、セットバージョンを取得してセットをリストに置き換えた場合、次のようになります。
ネストされた例外はorg.hibernate.invalidmappingexception:無効なマッピングからマッピングドキュメントを解析できませんでした
ありがとうミーシャ
<!-- bi-directional one-to-many association to SpreadsheetImportTemplateColumn -->
<list name="columns">
<!--
<set name="columns" lazy="false" inverse="true"
cascade="all-delete-orphan" sort="natural"
order-by="voided asc, preferred desc, date_created desc">
-->
<key column="template_id" not-null="true" />
<!--
<one-to-many class="SpreadsheetImportTemplateColumn" />
</set>
-->
</list>
解決
あなたが言った
一方、セットのあるバージョンは正常に機能します
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*
)>
あなたが見ることができるお尻、要素をリストします インデックスまたはリストインデックス要素のいずれかが必要です, 、重要な要素、そして次のいずれか
- エレメント
- 1対多い
- 多くの人から
- 複合要素
- 多くの人から
ここにリスト-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>
他のヒント
Hibernateでは、リストはインデックス列を指定する必要があります。
のセクション6.2.3を参照してください 休止状態のドキュメント.
所属していません StackOverflow