lunes, 6 de abril de 2009

Nhibernate: Composite Key

Después de meses creando una clase separada para definir la llave compuesta, nos percatamos que esto no es necesario, y la podemos crear en la misma clase. Para que no nos vuelva a ocurrir posteo el ejemplo:

Tabla:
TABLA_COMPUESTA

LLAVE1 (NUMBER)
LLAVE2 (NUMBER)
DESC (VARCHAR2)
OBS (VARCHAR2)

Mapping:
TablaCompuesta.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="true">
<class name="ProjectEntities.TablaCompuesta, ProjectEntities" table="TABLA_COMPUESTA">
<composite-id>
<key-property name="llave1" column="llave1" type="Int32"/>
<key-property name="llave2" column="llave2" type="Int32"/>
</composite-id>
<property name="desc" column="desc" type="String"/>
<property name="obs" column="obs" type="String"/>
</class>

Clase:
TablaCompuesta.vb

Public Class TablaCompuesta

Private _llave1 Int32
Private _llave2 As Int32
Private _desc As String
Private _obs As String

Public Overridable Property llave1() As Int32
Get
Return Me._llave1
End Get
Set(ByVal value As Int32
Me._llave1 = value
End Set
End Property

Public Overridable Property llave2() As Int32
Get
Return Me._llave2
End Get
Set(ByVal value As Int32)
Me._llave2 = value
End Set
End Property

Public Overridable Property desc() As String
Get
Return Me._desc
End Get
Set(ByVal value As String)
Me._desc = value
End Set
End Property

Public Overridable Property obs() As String
Get
Return Me._obs
End Get
Set(ByVal value As String)
Me._obs = value
End Set
End Property

Public Overrides Function Equals(ByVal obj As Object) As Boolean
Return MyBase.Equals(obj)
End Function

Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode
End Function
End Class

No hay comentarios:

Publicar un comentario