mmmmmmmm ahora que lo veo.. el error incluso esta en los screenshots de
Ayende (cuando agrega el constrained=true)
y si te fijas, se lo dicen en los comentarios también esta mal (tanto en los
comentarios del re-post en nhforge
http://nhforge.org/blogs/nhibernate/archive/2009/04/19/nhibernate-mapping-lt-one-to-one-gt.aspxcomo
en los comentarios de su blog)

Me parece que eso de constrained="true" solo debe funcionar en el caso que
la one-to-one es a través de la clave primaria... de hecho la documentación
dice:

constrained (optional) specifies that a *foreign key constraint on the
primary key *of the mapped table references the table of the associated
class. This option affects the order in which Save() and Delete() are
cascaded (and is also used by the schema export tool).

http://nhforge.org/doc/nh/en/index.html


Se me quemaron los libros..sinceramente

El 6 de mayo de 2011 08:38, Juan Cuello <[email protected]> escribió:

> No, mi generator es por sequence. Ya he visto ese tema en el link que
> me diste.
>
> Los mappings son, quitando las propiedades que no vienen al caso:
>
> EntitatAssociada:
>
>        <class name="EntitatAssociada" table="`RHUFOENTIDADASOCIADA`"
> schema="`RHUDES`">
>                <id name="ID" access="property" column="`IDENTIDADASOCIADA`"
> length="22" type="System.Int64" unsaved-value="0">
>                        <generator class="sequence">
>                                <param
> name="sequence">SEQ_RHUFOENTIDADASOCIADA</param>
>                        </generator>
>                </id>
>            <one-to-one name="EntitatAssociadaLogo" constrained="true"
> foreign-key="none" class="EntitatAssociadaLogo" />
>         </class>
>
> EntitatAssociadaLogo:
>
>        <class name="EntitatAssociadaLogo"
> table="`RHUFOENTIDADASOCIADALOGO`"
> schema="`RHUDES`">
>                <id name="ID" access="property"
> column="`IDENTIDADASOCIADALOGO`"
> length="22">
>                        <generator class="sequence">
>                                <param
> name="sequence">SEQ_RHUFOENTIDADASOCIADALOGO</param>
>                        </generator>
>                </id>
>                <property name="Logo" type="BinaryBlob" column="`EALOLOGO`"
> length="4000" />
>                 <many-to-one name="EntitatAssociada"
> class="EntitatAssociada" unique="true" />
>         </class>
>
> Muchísimas gracias!
>
>
> On 6 mayo, 13:06, José F. Romaniello <[email protected]> wrote:
> > mm.. podes mostrar un mapping más completo?
> > Debería funcionar bien en ese caso.
> > Por casualidad no habras copiado y puesto de algún lado: <generator
> > class="foreign"> para el id de EntidadAsociadaLogo
> > (no deberías hacerlo... te pregunto por que ese es otro caso de
> one-to-one y
> > te daría este problema)
> >
> > El 6 de mayo de 2011 07:03, Juan Cuello <[email protected]>
> escribió:
> >
> >
> >
> >
> >
> >
> >
> > > No me sale... :_(
> >
> > > Tengo EntidadAsociada y EntidadAsociadaLogo. A nivel de tablas, la
> > > tabla de EntidadAsociadaLogo tiene una FK a la tabla EntidadAsociada.
> >
> > > Yo quiero que cuando cargo una entidad asociada, su propiedad
> > > EntidadAsociadaLogo se cargue sólo si accedo a ella (lazy). He
> > > realizado el siguiente mapeo:
> >
> > > EntidadAsociada:
> >
> > >  <one-to-one name="EntitatAssociadaLogo" constrained="true" foreign-
> > > key="none" class="EntitatAssociadaLogo" />
> >
> > > EntidadAsociadaLogo:
> >
> > >  <many-to-one name="EntitatAssociada" class="EntitatAssociada"
> > > unique="true" />
> >
> > > He conseguido que haga lazy pero me genera esta select:
> >
> > > SELECT entitatass0_."IDENTIDADASOCIADALOGO" as IDENTIDA1_2_0_,
> > > entitatass0_."EALOLOGO" as EALOLOGO2_2_0_,
> > > entitatass0_.EntitatAssociada as EntitatA3_2_0_ FROM
> > > "RHUDES"."RHUFOENTIDADASOCIADALOGO" entitatass0_
> > > WHERE entitatass0_."IDENTIDADASOCIADALOGO"=:p0;:p0 = 8 [Type: Int64
> > > (0)]
> >
> > > En el where, debería filtrar por IDENTIDADASOCIADA, no por
> > > IDENTIDADASOCIADALOGO...
> >
> > > Cómo hago ese cambio?
> >
> > > Gracias
> >
> > > On 5 mayo, 22:19, Nestor Rodriguez <[email protected]> wrote:
> > > > Porque mapeas a Foto como una entidad si es una propiedad?  lo que
> puedes
> > > > hacer es mapearla como un <JOIN/> y le configuras el lazy.
> >
> > > > 2011/5/5 Juan Cuello <[email protected]>
> >
> > > > > No usaré lazy properties porque el modelo de datos está con dos
> tablas
> > > > > se paradas.
> >
> > > > > Perfecto! Gracias.
> >
> > > > > On 5 mayo, 17:28, José F. Romaniello <[email protected]>
> wrote:
> >
> > >http://ayende.com/Blog/archive/2009/04/19/nhibernate-mapping-ltone-to.
> ..
> > > > > > fijate que hay dos formas de hacerlo con one-to-one.
> >
> > > > > > Si usas nhibernate 3.x podes tener el blob en la misma tabla y en
> la
> > > > > misma
> > > > > > entidad usando lazy properties.
> >
> > > > > > El 5 de mayo de 2011 12:17, Juan Cuello <[email protected]>
> > > > > escribió:
> >
> > > > > > > Hola,
> >
> > > > > > > Cómo se hace una one to one con lazy loading?
> >
> > > > > > > Tengo la tabla Persona y tabla Foto. La tabla foto tiene una FK
> a
> > > > > > > idpersona. Lo que quiero es que cuando cargue una Persona, que
> > > tiene
> > > > > > > una propiedad Foto de tipo Foto, no me cargue los datos de la
> Foto,
> > > ya
> > > > > > > que es un blob, al no ser que acceda a esa propiedad.
> >
> > > > > > > class Persona{
> >
> > > > > > >  ....
> > > > > > >  public virtual Foto Foto{ get;set};
> > > > > > >  ....
> > > > > > > }
> >
> > > > > > > class Foto{
> > > > > > >  public virtual byte[] Buffer {get;set}
> > > > > > >  public virtual Persona {get;set}
> > > > > > >  .....
> > > > > > > }
> >
> > > > > > > Cómo sería el mapeo con xml?
> >
> > > > > > > Muchas gracias :)
> >
> > > > > > > --
> > > > > > > Para escribir al Grupo, hágalo a esta dirección:
> > > > > > > [email protected]
> > > > > > > Para más, visite:
> http://groups.google.com/group/NHibernate-Hispano
> >
> > > > > --
> > > > > Para escribir al Grupo, hágalo a esta dirección:
> > > > > [email protected]
> > > > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
> >
> > > --
> > > Para escribir al Grupo, hágalo a esta dirección:
> > > [email protected]
> > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>

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

Responder a