These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Problem creating criteria on bag
PostPosted: Mon Oct 29, 2007 7:39 am 
Newbie

Joined: Mon Jun 25, 2007 11:35 am
Posts: 15
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?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.