Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate


Автор: PovAnd 14.9.2007, 16:14
Объясните, как мне замэпить связь many-to-one, таким образом чтобы вместо Set в замэпленном классе использовался List.

Вот с Set все понятно, вот приведу свой мэппинг:

Код

        <many-to-one name="geographicalLocation"
            column="GEOGRAPHICAL_LOCATION_ID" class="GeographicalLocation"
            not-null="false" />

        <set name="geographicalLocations">
            <key column="ID" />
            <one-to-many class="GeographicalLocation" />
        </set>


тогда если мне надо коллекция челдов в моем классе GeographicalLocation, я без проблем ее получаю, но вот мне как-то не очень нравится коллекция Set. Хотелось бы получить коллекцию List.

Я попробовал следующий мэппинг:

Код

        <many-to-one name="geographicalLocation"
            column="GEOGRAPHICAL_LOCATION_ID" class="GeographicalLocation"
            not-null="false" />

        <list name="geographicalLocations">
            <key column="ID" />
            <list-index column="GEOGRAPHICAL_LOCATION_ID"/>
            <one-to-many class="GeographicalLocation" />
        </list>


В итоге оно действиетльно получило Лист с чилдами, но - если в Set были только сами объекты, то в List у меня еще с нужными мне объектами куча каких-то левых null, которые мне нафиг не нужны. Как исправить чтобы все было так как с Set, но коллекцией был List?

Автор: Tony 14.9.2007, 16:57
Можно:
Код

<hibernate-mapping >
    <class name="test.Person" table="person">
        <id name="personId" type="string" >
         <column name="personId" length="32" not-null="true" />
        </id>
        <property name="firstName" length="32"/>
        <property name="communityId" length="32"/>
    </class>
    
    <class name="test.Book" table="book">    
        <id name="communityId" type="string" >
            <column name="communityId" length="32" not-null="true"/>
        </id>
<!-- 
        <set name="listPersons">           
            <key column="communityId"/>
            <one-to-many class="test.Person" />            
        </set>
         -->
        <bag name="listPersons" inverse="true" cascade="all">
            <key column="communityId"/>
            <one-to-many class="test.Person"/>
           </bag> 

    </class>
</hibernate-mapping>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)