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 + Oracle + séquences


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 47
    Par défaut Hibernate + Oracle + séquences
    Bonjour,

    Sur le projet sur lequel je travaille nous souhaiterions gérer des champs de type auto-incrément (hors ID)

    Pour celà la 'seule' méthode connue sous Oracle est d'utiliser une séquence.

    Le problème se situe au niveau d'Hibernate pour le mapping. J'immagine que l'on doit considérer le champ comme un champ calculé et donc utiliser le tag formula.

    Nous avons donc fait la chose suivante :

    <property name="...." ..... formula="Select seq_nam.nextval() from DUAL">

    A priori ça ne fonctionnerai pas.

    Avez vous des solutions à proposer ou suivons nous la bonne démarche?

    Cdt

    Nicolas

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Qu'est-ce qui ne marche pas ?
    Ta valeur est incrémentée à chaque utilisation de la propriété ?

    Je propose quelque chose que je n'ai pas testé.
    J'utiliserais ta requête SQL mais uniquement à la création de l'objet, dans le DAO par exemple.
    Je laisserai donc un champ property standard.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 47
    Par défaut
    Hum apparement la valeur de la séquence ne serait pas injectée dans l'objet.

    Le but du jeu et d'éviter d'écrire du code pour récupérer la séquence puis l'injecter dans l'objet métier mais plutôt de laisser hibernate gérer cela comme on le laisse gérer les Ids.

    Nicolas

  4. #4
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    Tu peux utiliser le code ci-dessous (EJB3 compliant), où Sq_Id_Currency est le nom de ta séquence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Entity
    @Table(name = "Tbl_Currency")
    public class CurrencyEty  {
     
        @Id
        @SequenceGenerator(name = "seqCurr", sequenceName = "Sq_Id_Currency")
        @GeneratedValue(generator = "seqCurr")
        @Column(name = "Id_Currency")
        private Long id;
    ...
    }

  5. #5
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 47
    Par défaut
    Oui mais là tu me propose la génération d'un id et là n'est pas le problème.

    Nous avons un champs code contenant un nombre incrémenté automatiquement via une séquence. Ce champ n'est pas la clef (l'id) de l'objet.

    Y'a t'il un moyen de gérer le champs via le mapping hibernate?

    Nicolas

  6. #6
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Je te propose de regarder mon code dans mon post :


    http://www.developpez.net/forums/sho...d.php?t=265662


    J'ai fait une sequence sous oracle. Hibernate l'appelle bien malheureusement elle est re-initiliasé a chaque fois et c'est la mon probleme. Mais niveau code je suis quasi sur qu'il faille faire ainsi.

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    C'est bon j'ai résolu mon probleme pour ma sequence sur mon post, donc la reponse y est :

    http://www.developpez.net/forums/sho...d.php?t=265662

    J'avais un pb de config et non de mapping

Discussions similaires

  1. Hibernate et séquences Oracle
    Par al85 dans le forum Hibernate
    Réponses: 2
    Dernier message: 11/09/2009, 16h39
  2. Hibernate & Oracle Express 10g
    Par totoprog dans le forum Hibernate
    Réponses: 4
    Dernier message: 16/12/2008, 17h00
  3. [Hibernate][Oracle] Problème de rapidité
    Par Saloucious dans le forum Hibernate
    Réponses: 7
    Dernier message: 27/11/2008, 11h00
  4. Hibernate Oracle Blob Spring : opération interdite
    Par schant dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/07/2007, 13h37
  5. Connection jdbc + hibernate + oracle 9.2
    Par mimil77210 dans le forum Hibernate
    Réponses: 3
    Dernier message: 05/03/2007, 16h07

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