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 :

Verifier l'existance d'un tuple


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut Verifier l'existance d'un tuple
    Bonjour à tous

    J'ai un tableau dans mon schema constitué des champs suivnats :

    ID,Annee ,mois ,budget


    J'aimerais mettre en oeuvre une fonction qui aura comme paramètre :annee ,mois ,budget (un triplet qui est en fait unique :qui peut jouer le role d'une clé) et me retourne le traitment suivant :

    Si le tuple existe elle modifie la valeur du budget avec une valeur X .

    Sinon elle insere un nouveau tuple avec un id different des autres existants ,en respctant les valeurs annee ,mois ,X(pour le budget) lors de l'insértion .

    J'espère que j'arrive un peut à vous montrer à quoi sert cette fonction.

    Merci.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu fait un query hibernate, sur tes critère. Si l'objet en question existe, tu fait un setBudget() dessus, tu fais l'update et tu fait le commit. Si le query ne renvoiee rien, tu crée un nouvel objet et tu le sauve dans la session.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu fait un query hibernate, sur tes critère. Si l'objet en question existe, tu fait un setBudget() dessus, tu fais l'update et tu fait le commit. Si le query ne renvoiee rien, tu crée un nouvel objet et tu le sauve dans la session.
    Je viens d'adopter cette démarche.
    Elle me semble toute logique ,cependant j'ai pas eu de résultat quand l'objet n'existe pas cad lors de l'ajout d'un nouveau tuple.

    Autrement elle modifie just la valeure s'elle existe déja sinon pas de modification dans ma BD.

    Voila comment j'ai mis en oeuvre ma fonction en tenant compte de votre idée:

    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
     
     
    import org.hibernate.Criteria;
    import org.hibernate.criterion.Restrictions;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.Transaction; 
     
    public class changer {
     
    	public static void change(Integer annee,String mois,String typ,Integer bdg){
     
    		Criteria crit = HibernateSessionFactory.getSession().createCriteria(Capexetd.class)
            .add( Restrictions.eq("annee", annee) )
             .add( Restrictions.eq("mois", mois) )
            .add( Restrictions.eq("type", typ)		
            );
    		Capexetd res = (Capexetd ) crit.uniqueResult();
     
    if (res!=null)	{
    		Session session =HibernateSessionFactory.getSession();
    		Transaction tx=session.beginTransaction();
     
    		res.setBudget(bdg); 
    		tx.commit();
    	}
    	else{
     
    		Session session =HibernateSessionFactory.getSession();
     
    		Capexetd c=new Capexetd();
    		c.setId(12);
    		c.setAnnee(annee);
    		c.setBudget(bdg);
    		c.setMois(mois);
    		c.setType(typ);
    		session.save(c);	
    	}
    }
     
    }
    Une autre question :

    Pour l'id est ce qu'il est généré automatiquement lors de l'ajout du tuple ,ou bien je dois le gérer moi meme?
    Dans ce code je lui est affecté la val 12 qui n'est pas déja utilisé just pour vérifié mais sans succées comme je l'ai déja cité.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il manque un commit je pense. Sinon, pour l'id, sa gestion dépend de ton mapping.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut
    Ok c bon pour le prob d'insertion.En effet c'etait un probléme de session et de commit , car il faut les gérer à priopri en dehors des clauses if et else .

    Pour le prob d'Id je pense qu'il y a une option d'idexation auto qu'on peut ajouter dans le mapping.Vous croyez que ça résoud le problème?

    Pour le mapping j'utilise un mapping automatique généré par l'EDI MyEclipse mais peut etre dois-je ajouter l'option d'indexation automatique de l'identificateur.

Discussions similaires

  1. [Fichier] Vérifier l'existence d'images distantes....
    Par xavier.valentin dans le forum Langage
    Réponses: 6
    Dernier message: 28/01/2006, 11h24
  2. [FTP] Verifier l'existance d'un repertoire
    Par dj-julio dans le forum Langage
    Réponses: 18
    Dernier message: 13/01/2006, 13h19
  3. Vérifier l'existance de librairies
    Par aDamas dans le forum Général Java
    Réponses: 8
    Dernier message: 12/01/2006, 12h18
  4. Réponses: 6
    Dernier message: 28/09/2005, 14h15
  5. Verifier l'existance d'un utilisateur et d'une base...
    Par /dev/null dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/04/2005, 11h56

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