sync en-1.30 docd indexed associations
git-svn-id: https://svn.jboss.org/repos/hibernate/trunk/Hibernate3/doc@7134 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
parent
dd0138f4e2
commit
ecda7ccd00
|
@ -898,6 +898,74 @@ session.persist(category); // The relationship will be saved]]></p
|
|||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="collections-indexedbidirectional">
|
||||
<title>Asociaciones bidireccionales con colecciones indexadas</title>
|
||||
<para>
|
||||
Requiere especial consideración una asociación bidireccional donde un extremo esté representado
|
||||
como una <literal><list></literal> o <literal><map></literal>. Si hay una propiedad
|
||||
de la clase hija que mapee a la columna índice, no hay problema, podemos seguir usando
|
||||
<literal>inverse="true"</literal> en el mapeo de la colección:
|
||||
</para>
|
||||
|
||||
<programlisting><![CDATA[<class name="Parent">
|
||||
<id name="id" column="parent_id"/>
|
||||
....
|
||||
<map name="children" inverse="true">
|
||||
<key column="parent_id"/>
|
||||
<map-key column="name"
|
||||
type="string"/>
|
||||
<one-to-many class="Child"/>
|
||||
</map>
|
||||
</class>
|
||||
|
||||
<class name="Child">
|
||||
<id name="id" column="child_id"/>
|
||||
....
|
||||
<property name="name"
|
||||
not-null="true"/>
|
||||
<many-to-one name="parent"
|
||||
class="Parent"
|
||||
column="parent_id"
|
||||
not-null="true"/>
|
||||
</class>]]></programlisting>
|
||||
|
||||
<para>
|
||||
Pero, si no existe tal proiedad en la clase hija, no podemos pensar en la asociación como
|
||||
verdaderamente bidireccional (hay información en un extremo de la asociación que no está
|
||||
disponible en el otro extremo). En este caso, no podemos mapear la colección con
|
||||
<literal>inverse="true"</literal>. En cambio, podríamos usar el siguiente mapeo:
|
||||
</para>
|
||||
|
||||
<programlisting><![CDATA[<class name="Parent">
|
||||
<id name="id" column="parent_id"/>
|
||||
....
|
||||
<map name="children">
|
||||
<key column="parent_id"
|
||||
not-null="true"/>
|
||||
<map-key column="name"
|
||||
type="string"/>
|
||||
<one-to-many class="Child"/>
|
||||
</map>
|
||||
</class>
|
||||
|
||||
<class name="Child">
|
||||
<id name="id" column="child_id"/>
|
||||
....
|
||||
<many-to-one name="parent"
|
||||
class="Parent"
|
||||
column="parent_id"
|
||||
insert="false"
|
||||
update="false"
|
||||
not-null="true"/>
|
||||
</class>]]></programlisting>
|
||||
|
||||
<para>
|
||||
Nota que, en este mapeo, el extremo de la asociación valuado en colección es responsable de las
|
||||
actualizaciones a la clave foránea.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="collections-ternary">
|
||||
<title>Asociaciones ternarias</title>
|
||||
|
||||
|
|
Loading…
Reference in New Issue