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 :

Problème avec les requêtes hibernate


Sujet :

Hibernate Java

  1. #1
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut Problème avec les requêtes hibernate
    Bonjour

    Je débute avec hibernate et j'aimerai faire la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query query = session.createQuery("select u from Utilisateur as u");
    Toutefois, je suis dans une classe qui a son propre package (disons metier.UneClasseMetier) et ma classe Utilisateur est dans le package data.

    Quelqu'un sait comment faire ?

    Merci d'avance

    ZedroS en fin de soirée... fatigué !
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    à priori le package ne joue en rien quand tu fais ta requete. Il suffit juste que "Utilisateur" soit déclaré dans un fichier de mapping du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping>
     
    	<class name="data.Utilisateur" table="utilisateur">
    		<id name="idUtilisateur"  unsaved-value="null">
    			<column name="idlog" sql-type="long" not-null="true" />
    			<generator class="native" />
    		</id> 
    		<property name="nom" column="NAME" />
    	</class>
    </hibernate-mapping>

  3. #3
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Merci de ta réponse et désolé de mon délai... J'fais ça sur mon temps libre et, mon anni aidant, j'ai été pas mal occupé récemment.

    M'enfin, passons, j'ai dans mon fichier Utilisateur.hbm.xml :
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    	<class name="data.Utilisateur" table="utilisateur">
    		<id name="id" column="id_utilisateurs">
    			<generator class="sequence"/>
    		</id>
    		<property name="login"/>
    		<property name="password"/>
    		<property name="mail"/>
    	</class>
    </hibernate-mapping>
    Dans la classe appellante j'ai ça :
    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
     
    		Session session = getSessionCreator().createSession();
    		try {
    			Transaction tx = session.beginTransaction();
    			try {
    				Query query = session
    						.createQuery("select u from utilisateur as u");
    				utilisateurList = query.list();
    				tx.commit();
    			} catch (RuntimeException e) {
    				tx.rollback();
    				throw e;
    			}
    		} finally {
    			session.close();
    		}
    Ma classe Utilisateur est du genre :
    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
    package data;
     
    import java.io.Serializable;
     
    public class Utilisateur implements Serializable {
    	private static final long serialVersionUID = 234072691908794223L;
     
    	private Long id;
     
    	private String login;
     
    	private String password;
     
    	private String mail;
     
    	public String getLogin() {
    		return login;
    	}
     
    	public void setLogin(String login) {
    		this.login = login;
    	}
     
    	public String getMail() {
    		return mail;
    	}
     
    	public void setMail(String mail) {
    		this.mail = mail;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public Long getId() {
    		return id;
    	}
     
    	public void setId(Long uid) {
    		this.id = uid;
    	}
     
    }
    Je n'ai qu'une erreur à l'exécution, rien à la compilation...
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  4. #4
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Quelques compléments d'information : il me manquait en fait un fichier jar.

    Ceci dit, j'ai désormais l'erreur suivante :
    org.hibernate.hql.ast.QuerySyntaxException
    utilisateur is not mapped. [select u from utilisateur as u]

    Dans la doc, j'ai vu que si on utilise un fichier xml, on peut déclarer ce genre de choses:
    <mapping resource="events/Event.hbm.xml"/>
    par contre dans la doc je ne vois pas comment faire pour reproduire la même chose dans un document properties.
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par ZedroS
    Ceci dit, j'ai désormais l'erreur suivante :
    org.hibernate.hql.ast.QuerySyntaxException
    utilisateur is not mapped. [select u from utilisateur as u]
    Je pense que tu devrais essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select u from Utilisateur as u
    ou peut etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select u from data.Utilisateur as u
    .
    N'oublie pas que les requêtes Hibernate se font sur des objets et non directement sur les tables (d'ou OQL = Object Query Language), et que la casse est importante.
    Citation Envoyé par ZedroS
    Dans la doc, j'ai vu que si on utilise un fichier xml, on peut déclarer ce genre de choses:
    <mapping resource="events/Event.hbm.xml"/>
    par contre dans la doc je ne vois pas comment faire pour reproduire la même chose dans un document properties.
    Je ne comprends pas bien ce que tu veux dire par là. Tu peux remplacer Event.hbm.xml par n'importe quel fichier (pour ton cas Utilisateur.hbm.xml).

  6. #6
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Bon, en fait, afin de résoudre mon souci je me suis résolu à partir sur une configuration en xml d'hibernate (plus d'exemples accessibles à priori sur le net). Notamment, je peux y spécifier mes "mappings resources" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            <!-- mapping files -->
            <mapping resource="data/Utilisateur.hbm.xml"/>
    Du coup je trouve que cela gagne en lisibilité. De plus, en utilisant un fichier properties pour configurer Hibernate, il fallait, je crois, passer par des "cfg.addClass(maClasse.class), trop relou.

    Après moultes lectures de doc, cela marche désormais sur mon petit Tomcat

    La requête qui ne passait pas devait donc bien être "select u from Utilisateur as u"
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

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

Discussions similaires

  1. Problème avec une requête Hibernate
    Par pololalo dans le forum Hibernate
    Réponses: 10
    Dernier message: 22/08/2011, 23h37
  2. Probléme avec une requête (Hibernate)
    Par SI_BDD dans le forum Hibernate
    Réponses: 1
    Dernier message: 03/08/2011, 08h26
  3. Réponses: 3
    Dernier message: 08/06/2010, 11h16
  4. Problème avec une requête hibernate
    Par minie dans le forum Hibernate
    Réponses: 1
    Dernier message: 17/12/2007, 12h08
  5. Réponses: 1
    Dernier message: 28/06/2006, 13h31

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