IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

[Hibernate]Probleme de requete avec un "or"[\Hiber


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 19
    Points
    19
    Par défaut [Hibernate]Probleme de requete avec un "or"[\Hiber
    Bonjour,

    Je travaille sur une appli web utilisant struts/hibernate. J'ai probleme pour faire une requete en utilisant les Criteria:
    J'ai :
    - une table FABRICANT qui contient les fabricant de produit,
    - une table DENOMINATION qui contient les noms des produits
    - une table PRODUIT qui contient les produits,
    - une table MAGASIN qui contient les magasins
    - une table d'association PRODUITS_MAGASIN

    Les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    create table Fabrivant (
        codeFabricant  integer,  -- c 'est la clé primaire      
        codeDenomination integer, -- clé etrangere faisant reference à la table DENOMINATION
        primary key (codeFabricant ),
        foreign key (codeDenomination) reference DENOMINATION(codeDenomination))
     
    la classe java associée :
     
    public class Fabricant {
     
    private int codeFabricant;
    private Denomination denominatio;
    ................code des proprietes.......................................
    }
     
    create table DENOMINATION (
        codeDenomination integer --clé
        nom varchar2(50)
    ...................
     
    la classe
     
    public class Denomination {
    private int codeDenomination;
    private String nom;
    ................code des proprietes.......................................
    }
     
    create table produit {
     
    codeProduit integer,  --clé
    codeFabricant integer, clé etrangere faisant reference au Fabricant
    ..........................
     
    la classe
     
    public class Produit {
     
    private int codeProfuit;
    Fabricant fabricant;
    .............code des proprietes.................
    }
     
    create table Magasin (
    codeMagasin integer, --clé
    .........................................
     
    la classe
     
    public class Magasin {
    private int codeMagasin;
    .............proprietes........................
    }
     
    create table Magasins_Produit (
    id varchar2(20), --clé  
    codeMagasin integer, --clé etrangere faisant reference a un magasin
    codeProduit integer, --clé etrangere faisant reference a un produit
    ...........................................
     
    public class MagasinProduit {
    private String id;
    private int codeMagasin,
    private int codeProduit,
    ................propriete...........................
    Je souhaite avoir la liste des MagasinProduit pour lesquels le fabricant est "Toto" ou bien de Denomination "test"

    Pour commencer je dois taper quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List produitsmagasins = _session.createCriteria(MagasinProduit.class)
    .createCriteria("produit").createCriteria("reference").add(Expression.eq("nomFabricant", "Toto"))
    .createCriteria("fabricant").createCriteria("denomination").add(Expression.eq("nom", "test")).list();
    Avec ce que j'ai ecris ci-dessus j ai un "et" et non un "or". Est ce que quelqu'un connait un moyen pour faire le "or" entre le "nomFabricant" et "nom"
    Merci d'avance.

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    utilises la syntaxe HSQL c'est beaucoup plus simple et surtout plus proche de la manière d'écrire du SQL et formules AND ou OR

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    ok je vais regarder comment ca marche
    merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    oui ca marche merci. Par contre je trouve que c'est un peu lent (environ 5 s pour faire la recheche alors qu'avec les Criteria c'etait presque instantané...) Est ce que ajouter des index va jouer sur la réactivité d'Hibernate?

  5. #5
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Les indexes peuvent améliorer les performances dans des facteurs tout à fait gigantesques !!
    Je ne pense pas qu'il y ait une différence de l'ordre de 5 secondes entre une requête écrite en HQL et via l'API Criteria !!!!
    Tu peux aussi, si cela a une sens pour toi, déclarer des Queries dans les fichiers de config pour que Hibernate les pré-compile et les conservent en cache

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Effectivement tu as raison apres des essais repeté ca revien au meme. Ca a été plus long juste au départ ensuite ca tourne bien. Je te remercie beaucoup et à bientôt sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2005, 10h53
  2. Probleme de requetes avec SQLQuery
    Par Floverdoz dans le forum Bases de données
    Réponses: 19
    Dernier message: 01/06/2005, 16h43
  3. probleme de requete avec reprise du resultat :
    Par Maxoo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/12/2004, 20h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo