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 :

Soucis avec requête Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bigoodheart
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 154
    Par défaut Soucis avec requête Hibernate
    Bonjour,

    J'ai un petit soucis avec une requête hibernante ,je ne comprends pas pourquoi ,cette requéte est sencé m'afficher des informations sur ce que j'appelle un mmdcontact suivant son prenom alors le resultat me l'affiche ainsi que d'autre mmdcontacs du meme pays !

    J'ai fait pas mal de requéte avec d'autres attributs tous marche bien sauf que dans cette requéte je suis obligée d'utiliser inner join ,je crois que c'est ce qui me pose probléme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query req = getEntityManager().createQuery("SELECT ob2 FROM Location as ob2 inner join " +
    				"ob2.lstLinkMmdLoc as listeLoc WHERE (lower(listeLoc.mmdContacts.mc_namefir) LIKE lower ('"+ cndmp +"%'))");
    Quelqu'un a une idée ? pourquoi cette requéte me retourne pas le resultat exacte ?

    voici mon mapping :

    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
    public class MmdContacts {
     
    	@Id
    	private String mmd_c;
    	private String email;
    	private String mc_namefir;
    	private String mc_namelas;
     
     
    	@OneToMany(targetEntity = LinkMmdLoc.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
    	@JoinColumn(name = "mmd_c")
    	private Set<LinkMmdLoc> lstLinkMmdLoc;
     
    	@ManyToOne(targetEntity = MmdRole.class)
    	@JoinColumn(name = "role_c")
    	private MmdRole role;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class LinkMmdLoc {
     
    	@Id
    	private String zgm25;
    	@Id
    	private String mmd_c;
     
    	@ManyToOne(targetEntity = MmdContacts.class)
    	@JoinColumn(name = "mmd_c", insertable = false , updatable = false)
    	private MmdContacts mmdContacts;
     
    	@ManyToOne(targetEntity = Location.class)
    	@JoinColumn(name = "zgm25", insertable = false , updatable = false)
    	private Location location;
    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
    public class Location {
     
    	@Id
    	private String zgm25;
    	private String activ;
     
    	@OneToMany(targetEntity = LinkMmdLoc.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
    	@JoinColumn(name = "zgm25")
    	private Set<LinkMmdLoc> lstLinkMmdLoc;
     
    	@ManyToOne(targetEntity = ZgiDivision.class)
    	@JoinColumn(name = "zdivision_c")
    	private ZgiDivision division;
     
    	@ManyToOne(targetEntity = ZgiSubregion.class)
    	@JoinColumn(name = "zsubregion_c")
    	private ZgiSubregion subregion;
    J'ai zappé les guetters et les setters !

    Merci !

  2. #2
    Membre confirmé Avatar de Bigoodheart
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 154
    Par défaut
    Quelqu'un a une idée comment je pourrai remplacer le inner join pour que cette requete m'affiche le bon résultat ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query req = getEntityManager().createQuery("SELECT ob2 FROM Location as ob2 inner join " +
    				"ob2.lstLinkMmdLoc as listeLoc WHERE (lower(listeLoc.mmdContacts.mc_namefir) LIKE lower ('"+ cndmp +"%'))");

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Pas évident...tu peux toujours essayer d'ajouter une jointure interne avec la table des contacts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ob2 FROM Location as ob2 
    inner join ob2.lstLinkMmdLoc as listeLoc
    inner join listeLoc.mmdContacts as contact
    WHERE lower(contact.mc_namefir) LIKE lower ('"+ cndmp +"%')

Discussions similaires

  1. Soucis avec requête dans TableAdapter
    Par Franck.H dans le forum C#
    Réponses: 1
    Dernier message: 17/10/2013, 11h36
  2. petit souci avec hibernate.
    Par mehdi_swatch dans le forum Hibernate
    Réponses: 2
    Dernier message: 16/01/2007, 12h15
  3. Problème avec les requêtes hibernate
    Par joseph_p dans le forum Hibernate
    Réponses: 5
    Dernier message: 04/04/2006, 22h54
  4. [WD9] [Débutant] Souci avec une simple requête
    Par unix27 dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2006, 00h54
  5. [MySQL] Un petit soucis avec la requête, probablement à cause de la jointure
    Par gazouza dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/03/2006, 11h18

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