Mi idea seria algo así,
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
lazy="false">
<class name="IAnexable, Namespace"
dynamic-update="true"
dynamic-insert="true"
lazy="true"
abstract="true">
<union-subclass name="ConcreteAnexo2" table="ConcreteAnexo2"
lazy="true"
dynamic-update="true"
dynamic-insert="true"
extends="IAnexable"
abstract="false">
<id name="Id" column="Id" type="System.Int32" unsaved-
value="0"><generator class="native"/></id>
<property .... />
.....
</union-subclass>
<union-subclass name="ConcreteAnexo2" table="ConcreteAnexo2"
lazy="true"
dynamic-update="true"
dynamic-insert="true"
extends="IAnexable"
abstract="false">
<id name="Id" column="Id" type="System.Int32" unsaved-
value="0"><generator class="native"/></id>
<property .... />
.....
</union-subclass>
</class>
</hibernate-mapping>
¿Es posible esto? Un saludo y gracias por vuestro tiempo.
On 28 ene, 09:26, Victor Mingueza <[email protected]> wrote:
> Si no me equivoco, usando subclass no puedo indicar la tabla a la cual
> quiero que mapee mi objeto, con lo que estaría usando la estrategia de
> Table per class Hierarchy, y me mapearia todas las clases concretas
> sobre la misma tabla y no es el objetivo.
>
> El objetivo es usar una tabla por cada clase concreta, las cuales
> heredan todas de una misma interfaz, pero sino me equivoco aquí no
> puedo usar identity para que el SGBD, se encargue de generar mi clave
> primaria. En la cual no quiero que hayan saltos sino que sean números
> correlativos para cada una de mis tablas. ¿Es esto posible? y si
> podéis darme alguna guía ya que en la documentación no veo ejemplos
> sobre esto.
>
> Pensándolo bien el discriminador no seria necesario. Ya que yo podría
> hacer una query para obtener un objeto concreto con una consulta del
> tipo s.Get(typeof(ConcreteAnexo1)(1), cuando sepa que es de este tipo,
> en lugar de algo como esto s.Get(typeof(IAnexable)(1,"ConcreteAnexo1")
>
> Un saludo
>
> On 27 ene, 19:30, Fabio Maulo <[email protected]> wrote:
>
>
>
> >http://nhforge.org/doc/nh/en/index.html#mapping-declaration-subclass
> > que el campo discriminator sea parte de la PK no lo vas a encontrar ya que
> > no es la def. en ORM.
> > En ORM el POID es univoco adentro una gerarquia de clases o univoco en todo
> > el dominio así que no hace falta usar una clave compuesta para eso.
>
> > El 27 de enero de 2010 14:03, Victor Mingueza
> > <[email protected]>escribió:
>
> > > Hola Buenas a todos,
>
> > > Quería saber si exista la posibilidad de usar esta opción en
> > > NHibernate, ya que en la documentación no he visto ningún ejemplo de
> > > como hacerlo y no me parece en principio una forma tan rara de
> > > realizar la herencia.
>
> > > Os paso a explicar el caso para que quede un poco mas claro. Mi
> > > sistema permite que unos objetos en concretos sean Anexables a otros,
> > > es decir
>
> > > Mi elemento A tiene una colección de objetos Anexos los cuales pueden
> > > ser del tipo ConcreteAnexo1, ConcreteAnexo2...los cuales implementan
> > > todos las interfaz Anexos que define una serie de propiedades comunes
>
> > > Pero mis ConcreteAnexo no quiero que compartan el mismo identificador,
> > > es decir en la tabla ConcreteAnexo1 no quiero que hayan saltos en el
> > > Id, porque este se ha usado en un registro de ConcreteAnexo2.
>
> > > Sino que la clave de mi table ConcreteAnexo1 fuera solo el
> > > identificador mas el campo discriminador que no sera parte de la clave
> > > primaria. Aunque NHibernate si use este discriminador primero para
> > > diferenciar entre las distintas tablas cuando se haga una consulta por
> > > un Id concreto evitando hacer la select de cada una de las tablas
> > > ConcreteAnexo. y por ultimo usar ambos campos la PK y Discriminador
> > > para diferenciar varios objetos de tipos concreto distintos.
>
> > > Un saludo y gracias por vuestro tiempo.
>
> > > --
> > > Para escribir al Grupo, hágalo a esta dirección:
> > > [email protected]
> > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > --
> > Fabio Maulo
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano