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

Java EE Discussion :

Problème d'enrigstrement des données en base


Sujet :

Java EE

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Points : 187
    Points
    187
    Par défaut Problème d'enrigstrement des données en base
    Bonjour à tous,
    J'ai un soucis lorsque je veux enregistrer mes données en base car celles-ci ne sont pas enregistrées.

    Voici des exemples de ce que je fais dans mon code:

    Extrait du service:
    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
     
    /**
         * {@inheritDoc}
         */
        @Override
        @Transactional
        public MonObjetVO create(MonObjetVO monObjetVO) throws Exception {
            Objet model = MonObjetClonerFactory.getInstance().getDefaultClonerToModel().copy(monObjetVO);
            // utilise getEntityManager().persist(t);
            monObjetDao.persist(model);
            return MonObjetClonerFactory.getInstance().getDefaultClonerToVo().copy(model);
        }
     
        /**
         * {@inheritDoc}
         */
        @Override
        @Transactional
        public MonObjetVO update(MonObjetVO monObjetVO) throws Exception {
            MonObjet model = MonObjetClonerFactory.getInstance().getDefaultClonerToModel().copy(monObjetVO);
            // utilise getEntityManager().merge(t);
            model = monObjetDao.update(model);
            return MonObjetClonerFactory.getInstance().getDefaultClonerToVo().copy(model);
        }
    Le modèle est constitué avec d'autres modèles et il y a des jointures (il y a des getteurs et setteurs associés):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        @OneToMany(mappedBy = "column1")
        private List<MonModele1> modeles1;
     
        @ManyToMany
        @JoinTable(name = "MAP_MODELE_MODELE2", joinColumns = { @JoinColumn(name = "column2") }, inverseJoinColumns = { @JoinColumn(name = "column3", nullable = false) })
        private List<MonModele3> modeles3;
    J'ai bien utilisé l'annotation @Transactional et j'appelle les persist() et update() de mon entityManager. Cela ne sauvegarde rien en base et je n'ai aucune exception. Pourtant, en sortie du update, lorsque je récupère l'objet modèle en retour il semble normal... mais rien en base. J'ai des traitement similaires mais avec des modèles plus simples (sans jointures et donc sans utilisation d'autres modèles) et cela marche bien ce qui me fait penser que l'entityManager est bien configuré mais j'ai peut être oublié un truc qui ferait que les objets complexes et avec des jointures ne sont pas correctement insérés ou mis à jour en base.

    Pouvez-vous m'aider svp? Comment pourrais-je savoir ce qu'il se passe et pourquoi cela ne fait rien en base?

    Edit: Je viens de remarquer en activant l'affichage des requêtes sql qu'il n'y a pas de requête update dans le cas qui ne marche pas alors qu'il y en a une dans le cas qui marche. Je ne comprend pas car le code est similaire pour les deux. Une idée?
    Diplomes: DUT informatique et Master 2 MIAGE.
    Développeur Java/J2EE (principalement), .NET (niveau scolaire mais je compte m'améliorer ) et Web (HTML, PHP...).

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Comment est instancié ton DAO monObjetDao ?
    Que fait exactement ta méthode MonObjetClonerFactory.getInstance().getDefaultClonerToModel() ?
    Est-ce qu'elle renvoie un object type @Entity ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Points : 187
    Points
    187
    Par défaut
    Il y a un cloner qui permet de passer des VO aux modèles manipulés par le DAO et inversement.

    J'ai trouvé la solution: en fait il y a du multi-base mais cela est mal géré et il m'a suffit de préciser quel transactionManager utiliser avec le value du @Transactional. En effet, il n'utilisait pas le bon et travaillait donc sur la mauvaise base où la table n'existe pas.

    Je vous remercie.
    Diplomes: DUT informatique et Master 2 MIAGE.
    Développeur Java/J2EE (principalement), .NET (niveau scolaire mais je compte m'améliorer ) et Web (HTML, PHP...).

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/03/2010, 16h09
  2. problème d'import des données dans une base de donnees oracle 10g
    Par abderrahman86 dans le forum Import/Export
    Réponses: 4
    Dernier message: 14/05/2009, 17h42
  3. nouveau problême d'insertion des données dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/03/2007, 15h32
  4. [MySQL] Problème avec affichage des données d'une base MySQL
    Par leclone dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/12/2006, 12h40
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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