Размещение списка индексов при использовании списка в Hibernate - PullRequest
4 голосов
/ 17 декабря 2010

Я использовал Set, но теперь из-за ограничений виджетов, мне нужно использовать list.aa пример моего файла отображения с использованием A SET и List:Может ли кто-нибудь помочь мне разместить индекс списка.Я получаю некоторую путаницу.

**Attribute Mapping File using Set**
?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Dec 16, 2010 5:25:09 AM by Hibernate Tools 3.4.0.Beta1 -->
<hibernate-mapping>
    <class name="h.Attribute" table="ATTRIBUTE">
        <id name="AttributeId" type="long">
            <column name="ATTRIBUTEID" />
            <generator class="native" />
        </id>
        <property name="AttributeName" type="java.lang.String">
            <column name="ATTRIBUTENAME" />
        </property>
        <set name="Options" table="ATTRIBUTEOPTION" inverse="false"  cascade="all" lazy="true">
            <key>
                <column name="ATTRIBUTEID" />
            </key>
            <one-to-many class="h.AttributeOption" />
        </set>
    </class>
</hibernate-mapping>



 **Category Mapping File using Set**
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Dec 16, 2010 8:37:02 AM by Hibernate Tools 3.4.0.Beta1 -->
<hibernate-mapping>
    <class name="h.Category" table="CATEGORY">
        <id name="CategoryId" type="long">
            <column name="CATEGORYID" />
            <generator class="native" />
        </id>
        <property name="CategoryName" type="java.lang.String">
            <column name="CATEGORYNAME" />
        </property>

        <many-to-one name="ParentCategory" class="h.Category">
            <column name="PARENT_CATEGORY_ID" />
        </many-to-one>

        <set name="SubCategory" lazy="true" cascade="all-delete-orphan" inverse="true">
            <key>
                <column name="PARENT_CATEGORY_ID" />
            </key>
            <one-to-many class="h.Category" />
        </set>

        <set name="AllAttributes" table="ATTRIBUTE" inverse="false" lazy="true"  cascade="all">
            <key>
                <column name="CATEGORYID" />
            </key>
            <one-to-many class="h.Attribute" />
        </set>

    </class>
</hibernate-mapping>

Файл отображения категории с использованием списка без индекса списка

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Dec 17, 2010 2:10:50 AM by Hibernate Tools 3.4.0.Beta1 -->
<hibernate-mapping>
    <class name="h.Category" table="CATEGORY">
        <id name="CategoryId" type="long">
            <column name="CATEGORYID" />
            <generator class="assigned" />
        </id>
        <property name="CategoryName" type="java.lang.String">
            <column name="CATEGORYNAME" />
        </property>
        <many-to-one name="ParentCategory" class="h.Category" fetch="join">
            <column name="PARENTCATEGORY" />
        </many-to-one>
        <list name="SubCategory" inverse="false" table="CATEGORY" lazy="true">
            <key>
                <column name="CATEGORYID" />
            </key>
            <list-index></list-index>
            <one-to-many class="h.Category" />
        </list>
        <list name="AllAttributes" inverse="false" table="ATTRIBUTE" lazy="true"  cascade="all">
            <key>
                <column name="CATEGORYID" />
            </key>
            <list-index></list-index>
            <one-to-many class="h.Attribute" />
        </list>
    </class>
</hibernate-mapping>

Файл отображения атрибута с использованием списка без спискаиндекс

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Dec 17, 2010 2:10:50 AM by Hibernate Tools 3.4.0.Beta1 -->
<hibernate-mapping>
    <class name="h.Attribute" table="ATTRIBUTE">
        <id name="AttributeId" type="long">
            <column name="ATTRIBUTEID" />
            <generator class="assigned" />
        </id>
        <property name="AttributeName" type="java.lang.String">
            <column name="ATTRIBUTENAME" />
        </property>
        <list name="Options" inverse="false" table="ATTRIBUTEOPTION" lazy="true" cascade="all">
            <key>
                <column name="ATTRIBUTEID" />
            </key>
            <list-index></list-index>
            <one-to-many class="h.AttributeOption" />
        </list>
    </class>
</hibernate-mapping>

Ответы [ 3 ]

5 голосов
/ 17 декабря 2010

Чтение Спящий режим Ссылка: 6.2.3. Проиндексированные коллекции

Например:

    <list name="whatEver">
        <key column="whatEver_fk"/>
        <index column="idx"/>
        <one-to-many class="WhatEver"/>
    </list>
3 голосов
/ 08 марта 2013

Ссылка Hibernate 3.3 говорит "Индекс массива или списка всегда имеет тип integer ...", а также "Если в вашей таблице нет столбца индекса, и вы все еще хотите использовать list в качестве типа свойства, вы можете сопоставить свойство как Hibernate <bag>. "

Пример пакета:

<bag name="options" table="ATTRIBUTEOPTION" order-by="column_name asc|desc" inverse="true" lazy="true" fetch="select">
    <key column="ATTRIBUTEID" />
    <one-to-many class="h.AttributeOption" />
</bag>
2 голосов
/ 16 августа 2012

Я думаю, что вы должны задать свойство "index" в POJO, для которого вы создаете отношение один-ко-многим

<list name="whatEver">
        <key column="whatEver_fk"/>
        <index column="idx"/>
        <one-to-many class="WhatEver_Class"/>
    </list>

В приведенном выше примере POJO "WhatEver_Class" должен иметь свойство index, а его hbm-файл должен иметь тег свойства ниже.

<property name="index" type="long" insert="false" update="false">
            <column name="idx" />
        </property>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...