PDA

View Full Version : [nhibernate / net 2.0]Relazioni e Collections


RaouL_BennetH
24-06-2009, 09:50
Buongiorno :)

Ho due tabelle:


Clienti
--------------
id PK
ragioneSociale
--------------

Fatture
clienteId
numFat
dataFat
importo
bla....
--------------


//Classe Cliente
public class Cliente
{
private int id;
private string ragioneSociale;
private IList fatture;
//i relativi metodi pubblici get e set
}

public class Fatture
{
private int clienteId;
private int numFat;
private DateTime dataFat;
private double imponibile;
blablabla
}

//lato mapping:

Cliente.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="LearningHibernate.Clienti, LearningHibernate" table="Clienti">
<id name="ID" column="id" type="Int32" unsaved-value="0">
<generator class="assigned"></generator>
</id>
<property name="RagioneSociale" column="ragioneSociale" type="String"></property>
<bag name="Fatture" cascade="all">
<key column="ClienteId"></key>
<one-to-many class="LearningHibernate.Fatture, LearningHibernate"/>
</bag>
</class>
</hibernate-mapping>


Fatture.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="LearningHibernate.Fatture, LearningHibernate" table="Fatture">
<id name="ClienteID" column="clienteId" type="Int32">
<generator class="assigned"></generator>
</id>
<property name="DATAFAT" type="DateTime" </property>
<property name="NUMFAT" type="Int32" </property>
<blablabla/>

</class>
</hibernate-mapping>



Ora, se desidero ottenere tutte le fatture relative ad un cliente, ci riesco senza problemi.

Ho il problema invece a visualizzare l'elenco completo delle fatture considerando che:

Se popolo soltanto la lista delle fatture, le vedo tutte;
La lista che vedo però manca di un dato essenziale che è la ragione sociale presente nell'entità Clienti.

In pratica si tratta di fare una semplice Join ma i miei tentativi fino ad ora sono andati male.

Poi, non vorrei stare a scrivere query chilometriche perchè credo non sia il modo giusto di utilizzare hibernate.

Mi date una mano?

Grazie mille :)

RaouL.