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: Pb avec API criteria
PostPosted: Wed Aug 23, 2006 10:51 am 
Newbie

Joined: Wed Aug 23, 2006 9:52 am
Posts: 2
Bonjour,

Voici mon problème:

J'ai une classe Ressource

Ensuite j'ai d'autre classe qui hérite de ressource, par exemple : Tiers, Materiel, ...

puis encore un second niveaux d'héritage ex. pour Tiers: Salarie, Client

la stratégie de mapping est une table par sous classe.


Code:
<class name="Ressource" table="RESSOURCE">
  <id name="Idressource" column="IDRESSOURCE" type="Int32" unsaved-value="0">
    <generator class="native"/>
  </id>

  <joined-subclass name="Tiers" extends="Ressource"  table="TIERS">
    <key column="IDTIERS"/>
    <joined-subclass name="Salarie" extends="Tiers"  table="SALARIE">
      <key column="IDSALARIE"/>
      ...
    </joined-subclass>
   ...
  </joined-subclass>
  ...
</class>


une ressource est en relation avec un type en NN (la table RessourceType) soit:

Ressource ---- RessourceType ---- Type

De même on peu effectuer des regroupements de ressource (table GroupeRessource) soit

Ressource ---- GroupeRessource ----Ressource

Maintenant je souhaite obtenir toutes les Ressources d'un type donnée et d'un Groupe donnée. Par exemple, toutes les ressource de type salariés (type SALARIE) du groupe FAMILLE_SALARIE_01

voici ma requete :

Code:
criteria = session.CreateCriteria(typeof(Ressource))
                         .CreateCriteria("GROUPE_RESSOURCEList")
                         .CreateCriteria("Idgroupe")
                         .Add(Expression.Eq("Idressource", _gId))
                         .CreateCriteria("TYPE_VINOTECHList")
                         .CreateCriteria("IdtypeVinotech")
                         .Add(Expression.Eq("IdtypeVinotech", _tvId));


J'obtiens bien ce que j'ai demandé, mais le probleme c'est que la requete qui passe est énorme !!!

En effet il y a interrogation de toutes les classes héritées, alors que je requête sur une classe de base, et que j'ai pas besoin de tout ramener.

Et donc je pense que les left outer join font chutter les performances !!!

Y a t'il moyen de récupere seulement mes ressources qui répondent a mes critères sans faire passé 10 pages de requêtes.

Une petite question en plus tant que j'y suis comment fonctionne le système:
Code:
case when .... then X

Ceci est en rapport avec l'héritage, mais j'aimerais comprendre exactement le fonctionnement pour comprendre les requetes générées et leurs conséquences sur les performances.
Code:
gp2_29_.NbJoursAvtVdg as NbJoursA4_29_3_,
gp2_30_.DensiteLiqueur as DensiteL2_30_3_,
gp2_30_.DegreMCR as DegreMCR30_3_,
gp2_30_.Allergene as Allergene30_3_,

case
when gp2_2_.IDSALARIE is not null then 1
when gp2_3_.IDLIVREUR is not null then 2
when gp2_4_.IDFOURNISSEUR is not null then 3
when gp2_5_.IDCENTRE_PRESSURAGE is not null then 4
when gp2_6_.IDCLIENT is not null then 5
when gp2_7_.IDSOCIETE_UTIL_VT is not null then 6
when gp2_8_.IDCOURTIER is not null then 7
when gp2_10_.IDGRAPPE is not null then 8
when gp2_11_.IDCITERNE is not null then 9
when gp2_12_.IDRANG is not null then 10
when gp2_13_.IDPRESSOIR is not null then 11
when gp2_14_.IDCOMPARTIMENT is not null then 12
when gp2_15_.IDPLANT is not null then 13
when gp2_16_.IDCUVE is not null then 14
when gp2_17_.IDCARTON is not null then 15
when gp2_18_.IDPALETTE is not null then 16
when gp2_19_.IDUNITE_CULTURALE is not null then 17
when gp2_20_.IDEXPLOITATION is not null then 18
when gp2_21_.IDFLACON is not null then 19
when gp2_25_.IDMATERIEL_AMORTISSABLE is not null then 20
when gp2_28_.IDPROD_CAVE is not null then 21
when gp2_29_.IDPROD_VIGNE is not null then 22
when gp2_30_.IDPROD_VIN is not null then 23
when gp2_1_.IDTIERS is not null then 24
when gp2_9_.IDCONTENEUR is not null then 25
when gp2_22_.IDLOT is not null then 26
when gp2_23_.IDVITI_VINI is not null then 27
when gp2_24_.IDMATERIEL is not null then 28
when gp2_26_.IDLIEU is not null then 29
when gp2_27_.IDPRODUIT_ASSOCIE is not null then 30
when gp2_.IDRESSOURCE is not null then 0

end as clazz_3_,

nntv3_.IDRESSOURCE_TYPE_VINOTECH as IDRESSOU1_4_,
nntv3_.IDRESSOURCE as IDRESSOU3_88_4_,
nntv3_.IDTYPE_VINOTECH as IDTYPE2_88_4_,



Merci d'avance pour votre aide !!!!!!!!

http://www.art-touch.com?u=aurelien


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.