tuve el mismo problema con unas bases que estoy trabajando, la
solucion la encontre en los foros de hibernate (el de java).
no recuerdo el link, pero lo tengo aca en mi wiki-ayuda-memoria, la
solucion es esta:

La clase que mapea la tabla con el índice compuesto se define así:

<class name="ClaseA" table="CLASE_A">
    <composite-id>
        <key-property name="key1" type="String"/>
        <key-property name="key2" type="Int32"/>
        <key-property name="key3" type="Int32"/>
    </composite-id>
    .
    .
    .
</class>

Y la clase que usa este mapeo como Foreign Key mapea a la otra de esta manera:

<class name="ClaseB" table="CLASE_B">
    <composite-id>
      <key-property name="key1" type="String"/>
      <key-property name="key2" type="Int32"/>
    </composite-id>
    <set name="ClaseASet" table="CLASE_A" cascade="all" order-by="key3 asc">
         <key>
             <column="key1"/>
             <column="key2"/>
         </key>
         <one-to-many class="ClaseA"/>
    </set>
    .
    .
    .
</class>

por favor corrijanme los gurús si estoy en un error

Saludos,
Martin

On 4/11/07, JuanCri <[EMAIL PROTECTED]> wrote:
>
> Gracias por responder.
>
> Efectivamente, persona tiene solo dos keys (id1 e id2). La razón no la
> conozco porque es una base de datos legacy. El esquema corregido sería
> así:
>
> Persona
>     id1 integer [PK]
>     id2 integer [PK]
>     fechanacimiento date
>
> TipoDireccion
>     tipodireccion integer [PK]
>     nombre varchar
>
> Direccion
>     id1 integer [PK] references Persona (id1)
>     id2 integer [PK] references Persona (id2)
>     tipo integer [PK] references TipoDireccion (tipodireccion)
>
> On 11 abr, 10:09, "Dario Quintana" <[EMAIL PROTECTED]>
> wrote:
> > Hola Juan,
> >
> > 1) No me queda claro por que tenés a persona con 3 PKs
> >
> > 2) Si una tabla tiene 2 claves principales (2 PKs), tendrias que
> > mapearlo usando composite-id.
> >
> > Saludos
> >
> > On 4/11/07, JuanCri <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> >
> > > Debo utilizar NHibernate en una base de datos que tiene un esquema
> > > similar a este (cambié los nombres reales, lo importante es la forma
> > > en que tiene una llave foránea):
> >
> > > Persona
> > >     id1 integer [PK]
> > >     id2 integer [PK]
> > >     fechanacimiento date [PK]
> >
> > > TipoDireccion
> > >     tipodireccion integer [PK]
> > >     nombre varchar
> >
> > > Direccion
> > >     id1 integer [PK] references Persona (id1)
> > >     id2 integer [PK] references Persona (id2)
> > >     tipo integer [PK] references TipoDireccion (tipodireccion)
> >
> > > Es algo así.. entonces tengo este problema:
> > > ¿Cómo declaro una llave foránea de dos campos (id1, id2) entre
> > > dirección y persona?
> > > Intenté agregar dos tags <key..,> dentro de <set> en persona, pero
> > > creo que el esquema no lo acepta.
> >
> > > Muchas gracias.
> > > Atte,
> > > Juan C. Olivares
> >
> > --
> > Dario Quintanahttp://blog.darioquintana.com.ar
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a