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 :

save() suivi de get() sur un objet fonctionne mais rien dans ma DB !


Sujet :

Hibernate Java

Vue hybride

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 121
    Par défaut save() suivi de get() sur un objet fonctionne mais rien dans ma DB !
    Bonjour,

    dans un petit programme de test, je crée un objet que je rends persistant grâce à un save().La récupération de cet objet grâce à sa clé primaire et la commande get() me renvoie le bonne objet.

    Le probléme est que l'insertion n'est pas effectuée sur ma base MySQL !

    log4j:WARN No appenders could be found for logger (org.springframework.util.ClassUtils).
    log4j:WARN Please initialize the log4j system properly.

    Hibernate: insert into CLIENT (NOM, PRENOM, CODE_CLIENT) values (?, ?, ?)
    Hibernate: select client0_.CODE_CLIENT as CODE1_0_0_, client0_.NOM as NOM0_0_, client0_.PRENOM as PRENOM0_0_ from CLIENT client0_ where client0_.CODE_CLIENT=?

    Code de la classe :
    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
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    import com.securitoo.webservices.model.*;
    import com.securitoo.webservices.dao.*;
     
    public class ClientDAOHibernate extends HibernateDaoSupport implements ClientDAO {
     
    	public Client getClient(String id) {
    		return (Client) getHibernateTemplate().get(Client.class, id);
    	}
     
     
    	public void save(Client transientInstance) {
    		try {
    			getHibernateTemplate().save(transientInstance);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Est ce une histoire de transaction ?
    J'ai besoin de votre aide !

    Merci d'avance !

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Tu es sur qu'une excepton n'est pas levee dans ta methode save et que ta methode getClient retourne bien un Client non null?

  3. #3
    Membre confirmé Avatar de KneXtasY
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 121
    Par défaut
    Oui j'ai bien vérifié, aucune exception n'est levée !

    Code concernant la création et la récupération de l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ClientEntreprise ce = new ClientEntreprise(new ClientDB("pjpoj", "De Troy", "Lanfeust"));
    cm.saveEntrepriseClient(ce);// Fonction qui va appeler la fonction save du ClientDAO
     
    if(cm.getClient("pjpoj") == null)
    	System.out.println("L'ajout n'a pas fonctionné !");
    else
    	System.out.println("J'ai retrouvé "+cm.getClient("pjpoj").getNom());
    Log :
    Hibernate: insert into CLIENT (NOM, PRENOM, CODE_CLIENT) values (?, ?, ?)
    Hibernate: select clientdb0_.CODE_CLIENT as CODE1_0_0_, clientdb0_.NOM as NOM0_0_, clientdb0_.PRENOM as PRENOM0_0_ from CLIENT clientdb0_ where clientdb0_.CODE_CLIENT=?
    Hibernate: select clientdb0_.CODE_CLIENT as CODE1_0_0_, clientdb0_.NOM as NOM0_0_, clientdb0_.PRENOM as PRENOM0_0_ from CLIENT clientdb0_ where clientdb0_.CODE_CLIENT=?
    J'ai retrouvé De Troy


    EDIT 1 : j'ai renommé ma class Client en ClientDB entre temps !
    EDIT 2 : si j'ajoute manuellement un CLIENT dans ma base, j'arrive à le récupérer avec get ...

  4. #4
    Membre expérimenté Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Par défaut
    As tu commiter sa session hibernate ?
    La persistence réelle peux être décalé si hibernate utilise son cache.

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Effectivement là je pense qu'il s'agit d'un problème de flush/commit ...

  6. #6
    Membre confirmé Avatar de KneXtasY
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 121
    Par défaut
    J'ai trouvé, c'est bien un problème de transaction.

    Les requêtes passent bien dans les logs MySQL

    Je suis passé de InnoDB à MyISAM.
    L'écriture sur la base est bien prise en compte.

    L'erreur vient donc bien du commiter.
    Je vais regarder les options possibles ...

    Merci beaucoup !

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

Discussions similaires

  1. Script ne fonctionnant pas sur deux objets
    Par fufu7334 dans le forum Unity
    Réponses: 10
    Dernier message: 19/01/2014, 01h17
  2. Le clic sur un objet HTML ne fonctionne pas
    Par womannosky dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 10/03/2010, 11h19
  3. Réponses: 2
    Dernier message: 22/05/2009, 02h54
  4. [PHP 4] [POO] objet rempli mais rien quand je l'affiche
    Par allserv dans le forum Langage
    Réponses: 8
    Dernier message: 15/04/2009, 23h27
  5. Réponses: 9
    Dernier message: 21/11/2008, 22h59

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