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>
|
||||||
|
|
||||||
|
<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">
|
<sect2 id="collections-ternary">
|
||||||
<title>Asociaciones ternarias</title>
|
<title>Asociaciones ternarias</title>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue