Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
NHibernate version:
1.2.o
Mapping documents:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping namespace="it.telecomitalia.Gecko.BusinessEntities.Domain" xmlns="urn:nhibernate-mapping-2.2">
<class name="Tag, it.telecomitalia.Gecko.BusinessEntities" table="Tags" lazy="false">
<id name="TagID" column="TagID" unsaved-value="null">
<generator class="assigned" />
</id>
<property name="Data" column="Data" type="DateTime"/>
<property name="Ambito" column="AmbitoID" type="it.telecomitalia.Gecko.BusinessEntities.Domain.Ambito, it.telecomitalia.Gecko.BusinessEntities"/>
<property name="SottoAmbito" column="SottoAmbitoID" type="it.telecomitalia.Gecko.BusinessEntities.Domain.SottoAmbito, it.telecomitalia.Gecko.BusinessEntities"/>
<many-to-one name="Utente" column="Matricola" class="Utente, it.telecomitalia.Gecko.BusinessEntities"/>
<bag name="Informazioni" table="Tags_Informazioni" cascade="save-update">
<key column="TagID"/>
<many-to-many column="InformazioneID" class="Informazione, it.telecomitalia.Gecko.BusinessEntities"/>
</bag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping namespace="it.telecomitalia.Gecko.BusinessEntities.Domain" xmlns="urn:nhibernate-mapping-2.2">
<class name="Informazione, it.telecomitalia.Gecko.BusinessEntities" table="Informazioni" lazy="false">
<id name="InformazioneID" column="InformazioneID">
<generator class="identity" />
</id>
<discriminator column="TipologiaInformazioneID"/>
<property name="Testo" column="Testo" type="string"/>
<property name="DataInserimento" column="DataInserimento" type="DateTime"/>
<many-to-one name="Utente" column="Matricola" class="Utente, it.telecomitalia.Gecko.BusinessEntities"/>
<bag name="Files" table="Informazioni_Files" cascade="save-update" lazy="false" >
<key column="InformazioneID"/>
<many-to-many column="FileID" class="File, it.telecomitalia.Gecko.BusinessEntities"/>
</bag>
<subclass name="Intervento, it.telecomitalia.Gecko.BusinessEntities" discriminator-value="0">
</subclass>
<subclass name="Criticita, it.telecomitalia.Gecko.BusinessEntities" discriminator-value="1">
<property name="Stato" column="StatoInformazioneID" type="it.telecomitalia.Gecko.BusinessEntities.Domain.StatoCriticita, it.telecomitalia.Gecko.BusinessEntities"/>
<many-to-one name="UtenteCambioStato" column="MatricolaCambioStato" class="Utente, it.telecomitalia.Gecko.BusinessEntities"/>
<many-to-one name="TagCambioStato" column="TagIDCambioStato" cascade="save-update" class="Tag, it.telecomitalia.Gecko.BusinessEntities"/>
</subclass>
</class>
</hibernate-mapping>
Name and version of the database you are using:
Sql Server 2005
The generated SQL (show_sql=true):
2007-10-29 12:29:05,703 [1] [Loader] INFO SELECT this_.TagID as TagID11_5_, this_.Data as Data11_5_, this_.AmbitoID as AmbitoID11_5_, this_.SottoAmbitoID as SottoAmb4_11_5_, this_.Matricola as Matricola11_5_, utente3_.Matricola as Matricola9_0_, utente3_.Password as Password9_0_, utente3_.BadgeID as BadgeID9_0_, utente3_.Cognome as Cognome9_0_, utente3_.Nome as Nome9_0_, utente3_.Email as Email9_0_, utente3_.Telefono as Telefono9_0_, utente3_.GruppoUtentiID as GruppoUt8_9_0_, informazio4_.TagID as TagID__, informazio1_.InformazioneID as Informaz2_, informazio1_.InformazioneID as Informaz1_20_1_, informazio1_.Testo as Testo20_1_, informazio1_.DataInserimento as DataInse4_20_1_, informazio1_.Matricola as Matricola20_1_, informazio1_.StatoInformazioneID as StatoInf6_20_1_, informazio1_.MatricolaCambioStato as Matricol7_20_1_, informazio1_.TagIDCambioStato as TagIDCam8_20_1_, informazio1_.TipologiaInformazioneID as Tipologi2_1_, utente6_.Matricola as Matricola9_2_, utente6_.Password as Password9_2_, utente6_.BadgeID as BadgeID9_2_, utente6_.Cognome as Cognome9_2_, utente6_.Nome as Nome9_2_, utente6_.Email as Email9_2_, utente6_.Telefono as Telefono9_2_, utente6_.GruppoUtentiID as GruppoUt8_9_2_, utente7_.Matricola as Matricola9_3_, utente7_.Password as Password9_3_, utente7_.BadgeID as BadgeID9_3_, utente7_.Cognome as Cognome9_3_, utente7_.Nome as Nome9_3_, utente7_.Email as Email9_3_, utente7_.Telefono as Telefono9_3_, utente7_.GruppoUtentiID as GruppoUt8_9_3_, tag8_.TagID as TagID11_4_, tag8_.Data as Data11_4_, tag8_.AmbitoID as AmbitoID11_4_, tag8_.SottoAmbitoID as SottoAmb4_11_4_, tag8_.Matricola as Matricola11_4_ FROM Tags this_ left outer join Utenti utente3_ on this_.Matricola=utente3_.Matricola inner join Tags_Informazioni informazio4_ on this_.TagID=informazio4_.TagID inner join Informazioni informazio1_ on informazio4_.InformazioneID=informazio1_.InformazioneID left outer join Utenti utente6_ on informazio1_.Matricola=utente6_.Matricola left outer join Utenti utente7_ on informazio1_.MatricolaCambioStato=utente7_.Matricola left outer join Tags tag8_ on informazio1_.TagIDCambioStato=tag8_.TagID WHERE this_.AmbitoID = @p0 and (informazio1_.StatoInformazioneID = @p1 or informazio1_.StatoInformazioneID = @p2)
2007-10-29 12:29:06,265 [1] [Loader] INFO SELECT files0_.InformazioneID as Informaz1___1_, files0_.FileID as FileID1_, file1_.FileID as FileID6_0_, file1_.Descrizione as Descrizi2_6_0_, file1_.NomeFile as NomeFile6_0_ FROM Informazioni_Files files0_ left outer join Files file1_ on files0_.FileID=file1_.FileID WHERE files0_.InformazioneID=@p0
2007-10-29 12:29:06,328 [1] [Loader] INFO SELECT files0_.InformazioneID as Informaz1___1_, files0_.FileID as FileID1_, file1_.FileID as FileID6_0_, file1_.Descrizione as Descrizi2_6_0_, file1_.NomeFile as NomeFile6_0_ FROM Informazioni_Files files0_ left outer join Files file1_ on files0_.FileID=file1_.FileID WHERE files0_.InformazioneID=@p0
2007-10-29 12:29:06,343 [1] [Loader] INFO SELECT csulist0_.Matricola as Matricola__1_, csulist0_.CodCsu as CodCsu1_, csu1_.CodCsu as CodCsu13_0_, csu1_.Descrizione as Descrizi2_13_0_ FROM Utenti_Csu csulist0_ left outer join Csu csu1_ on csulist0_.CodCsu=csu1_.CodCsu WHERE csulist0_.Matricola=@p0
2007-10-29 12:29:06,375 [1] [Loader] INFO SELECT informazio0_.TagID as TagID__5_, informazio0_.InformazioneID as Informaz2_5_, informazio1_.InformazioneID as Informaz1_20_0_, informazio1_.Testo as Testo20_0_, informazio1_.DataInserimento as DataInse4_20_0_, informazio1_.Matricola as Matricola20_0_, informazio1_.StatoInformazioneID as StatoInf6_20_0_, informazio1_.MatricolaCambioStato as Matricol7_20_0_, informazio1_.TagIDCambioStato as TagIDCam8_20_0_, informazio1_.TipologiaInformazioneID as Tipologi2_0_, utente2_.Matricola as Matricola9_1_, utente2_.Password as Password9_1_, utente2_.BadgeID as BadgeID9_1_, utente2_.Cognome as Cognome9_1_, utente2_.Nome as Nome9_1_, utente2_.Email as Email9_1_, utente2_.Telefono as Telefono9_1_, utente2_.GruppoUtentiID as GruppoUt8_9_1_, utente3_.Matricola as Matricola9_2_, utente3_.Password as Password9_2_, utente3_.BadgeID as BadgeID9_2_, utente3_.Cognome as Cognome9_2_, utente3_.Nome as Nome9_2_, utente3_.Email as Email9_2_, utente3_.Telefono as Telefono9_2_, utente3_.GruppoUtentiID as GruppoUt8_9_2_, tag4_.TagID as TagID11_3_, tag4_.Data as Data11_3_, tag4_.AmbitoID as AmbitoID11_3_, tag4_.SottoAmbitoID as SottoAmb4_11_3_, tag4_.Matricola as Matricola11_3_, utente5_.Matricola as Matricola9_4_, utente5_.Password as Password9_4_, utente5_.BadgeID as BadgeID9_4_, utente5_.Cognome as Cognome9_4_, utente5_.Nome as Nome9_4_, utente5_.Email as Email9_4_, utente5_.Telefono as Telefono9_4_, utente5_.GruppoUtentiID as GruppoUt8_9_4_ FROM Tags_Informazioni informazio0_ left outer join Informazioni informazio1_ on informazio0_.InformazioneID=informazio1_.InformazioneID left outer join Utenti utente2_ on informazio1_.Matricola=utente2_.Matricola left outer join Utenti utente3_ on informazio1_.MatricolaCambioStato=utente3_.Matricola left outer join Tags tag4_ on informazio1_.TagIDCambioStato=tag4_.TagID left outer join Utenti utente5_ on tag4_.Matricola=utente5_.Matricola WHERE informazio0_.TagID=@p0
2007-10-29 12:29:06,406 [1] [Loader] INFO SELECT files0_.InformazioneID as Informaz1___1_, files0_.FileID as FileID1_, file1_.FileID as FileID6_0_, file1_.Descrizione as Descrizi2_6_0_, file1_.NomeFile as NomeFile6_0_ FROM Informazioni_Files files0_ left outer join Files file1_ on files0_.FileID=file1_.FileID WHERE files0_.InformazioneID=@p0
Debug level Hibernate log excerpt:
Hallo i got a problem narrowing the result on a bag: as described above I got an object Tag that has a bag Informazioni.
public class Tag
{
private string tagID;
private IList<Informazione> informazioni = new List<Informazione>();
.....
public abstract class Informazione
{
private long informazioneID;
private string testo;
.....
public enum StatoCriticita
{
Attiva = 0,
Rifiutata = 1,
In_attivazione = 2,
In_cancellazione = 3
}
public class Criticita : Informazione
{
private StatoCriticita stato;
I would like to have all the tags with the Informazioni bag of a certain type.
I tried like this
ICriteria onTag = NHibernateSessionManager.Instance.GetSession().CreateCriteria(typeof(Tag));
onTag.SetResultTransformer(CriteriaUtil.DistinctRootEntity);
onTag.Add(Expression.Eq("Ambito", Ambito.Prodotto));
ICriteria onInformazioni = onTag.CreateCriteria("Informazioni");
onInformazioni.Add((Expression.Or(Expression.Eq("Stato", StatoCriticita.In_attivazione), Expression.Eq("Stato", StatoCriticita.In_cancellazione)))).SetResultTransformer(CriteriaUtil.AliasToEntityMap);
IList list = onTag.List();
And I would expect to got only Informazioni with a Stato = StatoCriticita.In_attivazione or = StatoCriticita.In_cancellazione.
Unfortunately I get all the Informazioni of other state.
If I create a Criteria like this:
ICriteria onInfo = NHibernateSessionManager.Instance.GetSession().CreateCriteria(typeof(Informazione));
onInfo.Add((Expression.Or(Expression.Eq("Stato", StatoCriticita.In_attivazione), Expression.Eq("Stato", StatoCriticita.In_cancellazione)))).SetResultTransformer(CriteriaUtil.AliasToEntityMap);
IList<Informazione> infos = onInfo.List<Informazione>();
I receive the correct data, so all the Informazioni of a particular type as descrived by the Criteria.
Any idea?