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