De momento he solucionado el problema quitando el genérico y añadiendo
otra propiedad a la entidad para recoger el valor antiguo.

Ahora tengo una duda con el Update, este método recibe el objeto que
voy a actualizar, pero si lo que quiero es modificar los campos clave,
es decir, quiero actualizar el valor de la clave primaria con el
actual, pero busco por los valores antiguos:

update tabla set id = newId where id = oldId

Tengo que crearme una sentencia SQL y ejecutarla directamente o lo
puedo hacer con el método Update del objeto session???

Muchas gracias de nuevo.

Un saludo.



On 8 feb, 14:31, "Ica" <[EMAIL PROTECTED]> wrote:
> Un ejemplo más real:
>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
> lazy="false">
>         <class name="CustomerDataORM.Server.DataAccess.LegalEntityEntity,
> CustomerDataORM.Server.DataAccess" table="LEGAL_ENTITY">
>                 <composite-id>
>                         <key-property name="FinancialEntityIdentifier"
> column="FINANCIAL_ENTITY_IDENTIFIER" type="String" />
>                         <key-property name="CustomerGIdentifier"
> column="CUSTOMER_GIDENTIFIER" type="Int32"/>
>                 </composite-id>
>                 <property name="LegalDenominationName"
> column="LEGAL_DENOMINATION_NAME" type="String" />
>                 <property name="ActivityLkpCode" column="ACTIVITY_LKPCODE"
> type="String" />
>                 <property name="SectorLkpCode" column="SECTOR_LKPCODE"
> type="String" />
>                 <property name="LegalStructureLkpCode"
> column="LEGAL_STRUCTURE_LKPCODE" type="String" />
>                 <property name="OrganizedMarketLkpCode"
> column="ORGANIZED_MARKET_LKPCODE" type="String" />
>         </class>
> </hibernate-mapping>
>
> La clase:
>
> namespace CustomerDataORM.Server.DataAccess
> {
>     public class LegalEntityEntity
>     {
>         private PrimaryKey<string> financialEntityIdentifier = null;
>         private PrimaryKey<int?> customerGIdentifier = null;
>         private string legalDenominationName;
>         private string activityLkpCode;
>         private string sectorLkpCode;
>         private string legalStructureLkpCode;
>         private string organizedMarketLkpCode;
>
>         public LegalEntityEntity()
>         { }
>
>         public PrimaryKey<string> FinancialEntityIdentifier
>         {
>             get { return this.financialEntityIdentifier; }
>             set { this.financialEntityIdentifier = value; }
>         }
>         public PrimaryKey<int?> CustomerGIdentifier
>         {
>             get { return this.customerGIdentifier; }
>             set { this.customerGIdentifier = value; }
>         }
>         public string LegalDenominationName
>         {
>             get { return this.legalDenominationName; }
>             set { this.legalDenominationName = value; }
>         }
>         public string ActivityLkpCode
>         {
>             get { return this.activityLkpCode; }
>             set { this.activityLkpCode = value; }
>         }
>         public string SectorLkpCode
>         {
>             get { return this.sectorLkpCode; }
>             set { this.sectorLkpCode = value; }
>         }
>         public string LegalStructureLkpCode
>         {
>             get { return this.legalStructureLkpCode; }
>             set { this.legalStructureLkpCode = value; }
>         }
>         public string OrganizedMarketLkpCode
>         {
>             get { return this.organizedMarketLkpCode; }
>             set { this.organizedMarketLkpCode = value; }
>         }
>         public override bool Equals(object obj)
>         {
>             return base.Equals(obj);
>         }
>         public override int GetHashCode()
>         {
>             return base.GetHashCode();
>         }
>         public override string ToString()
>         {
>             StringBuilder sb = new StringBuilder();
>             ................
>             return sb.ToString();
>         }
>         public bool IsNullEntity
>         {
>             get
>             {
>                 if (this.financialEntityIdentifier == null ||
> this.customerGIdentifier == null)
>                     return true;
>                 else
>                 {
>                    if (financialEntityIdentifier.Key == null ||
> customerGIdentifier.Key == null)
>                         return true;
>                     else
>                         return false;
>                 }
>             }
>         }
>     }
>
> }
>
> Y la clase PrimaryKey:
>
> namespace CustomerDataORM.Server.DataAccess
> {
>     public class PrimaryKey<T>
>     {
>         private T oldKey;
>         private T mKey;
>
>         public PrimaryKey(T key)
>         {
>             this.mKey = key;
>             this.oldKey = key;
>         }
>
>         public T Key
>         {
>             get
>             {
>                 return mKey;
>             }
>             set
>             {
>                 mKey = value;
>             }
>         }
>
>         public T OldKey
>         {
>             get
>             {
>                 return oldKey;
>             }
>             set
>             {
>                 oldKey = value;
>             }
>         }
>     }
>
> }
>
> On 8 feb, 14:13, "Ica" <[EMAIL PROTECTED]> wrote:
>
>
>
> > Buenas, puede que me haya expresado mal, son 3 campos que componen la
> > clave primaria.
>
> > Echaré un vistazo al hilo que comentas.
>
> > Gracias.
>
> > Un saludo.
>
> > On 8 feb, 14:00, Fabio Maulo <[EMAIL PROTECTED]> wrote:
>
> > > Mas que complejo me parece muy confuso.
> > > Vamos de a poco..... (entre linea)
>
> > > Ica escribió:> Tengo una clase genérica para representar mis claves, pero 
> > > no se cómo
> > > > ponerlo en el fichero de mapeo.
>
> > > > Un pequeño ejemplo del código:
>
> > > > public class ClavePrimaria<T>
> > > > {
> > > >      private T claveActual;
> > > >      private T claveAntigua;
>
> > > >      public ClavePrimaria(T clave)
> > > >      {.....}
> > > >      .........
> > > > }
>
> > > El hecho de tener "claveActual" y "claveAntigua" es el clásico ejemplo
> > > que demuestra que la PK no se debe involucrar con informaciones del 
> > > negocio.
> > > ya que parece que estas haciendo una conversión, conviertete al uso de
> > > PK sin significado alguno para el negocio. Si quieres leer algo fijate
> > > el thread "Obviar composite-keys" del 14/12/2006 hay un mail con un
> > > adjunto; lee el adjunto.
>
> > > Este enjendro acá abajo que significa? son 3 campos que componen la
> > > clave primaria o son 3 claves primarias?
> > > Como sería rarisimo que sean 3 claves primarias por favor hace un
> > > ejemplo real.> public class Entidad1
> > > > {
> > > >      private ClavePrimaria<string> id_1;
> > > >      private ClavePrimaria<int> id_2;
> > > >      private ClavePrimaria<DateTime?> id_3;
>
> > > >      ................
> > > > }
>
> > > Bye.
> > > Fabio.- Ocultar texto de la cita -
>
> > - Mostrar texto de la cita -- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -


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