Sigo con este tema y tengo una duda con eager-loading. El modelo es el que
mostre en el post anterior: Order tiene una referencia a Customer y Customer
tiene una referencia a Party.

Mappings:

<class name="Order" table="Orders">
...
<many-to-one name="Customer" class="Customer" column="CustomerId"/>
</class>

<class name="Customer" table="Customers">
...
<many-to-one name="Party" cascade="save-update"
 unique="true" column="PartyId"/>
</class>

<import class="Party" />
 <class name="Person" table="People">
...
 <property name="FirstName"/>
<property name="LastName"/>
</class>

<class name="Company" table="Companies">
...
<property name="CompanyName"/>
</class>

Con esto tengo dos temas, primero que me da un error de compilacion del
mapping: "An association from the table Customers refers to an unmapped
class: pruebas.nh.modelo.Party", a pesar del import. Que estoy haciendo mal?

Luego me gustaria poder hacer este query (HQL)

"from Order o join fetch o.Customer c join fetch c.Party p"

Puedo hacer eso?

Gracias!

----------------------------------
Carlos Peix

2011/6/1 Carlos Peix <[email protected]>

> Hola gente,
>
> Quiero consultarles algo ya que estoy tratando de encontrar una forma de
> mapeo mas o menos estandar para un problema mas o menos estandar en mis
> modelos. La consulta no solo se relaciona con el mapeo en NH, tambien me
> interesa determinar la estructura de BD mas adecuada.
>
> Basicamente es la relacion evento-rol-actor, para que quede mas claro,
> permitanme conpartir algunas clases:
>
> // evento
> public class Order {
>     Guid _id;
>     Customer _customer;
> }
>
> // el rol
> public class Customer {
>     Guid _id;
>     Party _actor;    // (1) u Object _actor
> }
>
> // actores (ver Fowler para teoria sobre Party/Company/Person y
> accountability)
> public class Company : Party {
>     Guid _id;
>     string _companyName;
> }
>
> public class Person : Party {
>     Guid _id;
>     string _firstName;
>     string _lastName;
> }
>
> (1) aqui puedo tener definida alguna clase base para los actores que pueden
> adoptar el rol de customer (como seria el caso de Party) y otras veces no,
> para lo cual tendre que usar Object. Entiendo que esto me lleva a dos
> respuestas distintas a mi consulta.
>
> La pregunta es como me conviene mapear la propiedad _actor de Customer, ya
> se en el caso en que esta deba ser de tipo Object o Party.
>
> He probado con any y con many-to-one. Este objeto Customer podria o no
> utilizar el mismo valor para el Id que el actor. Opino que lo mejor seria
> que no lo hagan. Por ahi con Guids no hay problema pero en otros casos me
> restringe.
>
> Un punto adicional seria que, probablemente, necesite en la entidad Company
> o Person una coleccion de todos los roles desempeñados, seria como la
> relacion opuesta y, en este caso, definitivamente no los roles no van a
> compartir ninguna clase base salvo, eventualmente, una interfaz "IRol".
>
> ----------------------------------
> Carlos Peix
>
>

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