Hola buenas,

Tengo dos pequeños problemas.

1) Tengo dos tablas relacionadas 1 (Tabla A) a N (Tabla B). Resulta
que quiero agregar un nuevo registro en A que contiene una lista de
elementos nuevos en B. La lógica me dice que creo una instancia de A y
a su lista de objetos B, le agrego una instancia de B.

Cuando quiero persistir A, me da un error en B de que no puede poner a
null la foreign key. Se supone que NH debería persistir A y después
persistir B con el ID obtenido de A.

Si en lugar de hacer A.Lista.Add(B) hago B.A = A y lo agrego a la
lista funciona. Los mapeos son los siguientes:

Relación de A (Tramit) con B (HistoricEstats) (relación 1 a n):

    <set name="HistoricEstats" cascade="all" inverse="true"
lazy="true" access="field.pascalcase-underscore">
      <key>
        <column name="TRAMIT_ID"/>
      </key>
      <one-to-many class="IntGin.Core.GSIT.Domain.GsHistoricEstats,
IntGin.Core.GSIT.Domain"/>
    </set>

Relación de B con A (1 a 1 o many-to-one):

    <many-to-one name="Tramit"  access="field.pascalcase-underscore"
not-null="true" outer-join="auto" insert="true" update="true">
      <column name="TRAMIT_ID"/>
    </many-to-one>

2) La misma tabla de Tramit tiene una relación 1 a 1 con otra tabla
llamada GsXML. GsXML tiene el ID de Tramit. Si hago Tramit.Xml = GsXML
me vuelve a dar error de que no puede establecer null en la foreign
key de GsXML con Tramit. Si a GsXML le establezco el Tramit:
GsXML.Tramit = Tramit funciona pero tengo que hacer dos veces Save

Mapeo:

Tramit:

    <many-to-one name="Xml"  access="field.pascalcase-underscore" not-
null="true" cascade="all" insert="true" update="true" unique="true">
      <column name="TRAMIT_ID"/>
    </many-to-one>

GsXml:

    <many-to-one name="Tramit"  access="field.pascalcase-underscore"
not-null="true" outer-join="auto" insert="true" update="true"
cascade="all">
      <column name="TRAMIT_ID"/>
    </many-to-one>


Por favor, ¿alguien puede ayudarme?

Muchas gracias de antemano

-- 
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