السبات واحد إلى العديد من الخرائط تعمل مع قائمة ولكن ليس مجموعة؟
-
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*
)>
الحمار التي يمكنك رؤيتها ، قائمة القائمة يحتاج إما عن عنصر الفهرس أو القائمة المؤشر, ، عنصر رئيسي ، وواحد مما يلي
- عنصر
- واحد لكثير
- الكثير للكثيرين
- عنصر مركب
- كثير إلى أي شخص
هنا يذهب القائمة المؤشر 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 من الوثائق السباتية.