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

Persistance des données Java Discussion :

Problème sur update


Sujet :

Persistance des données Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut Problème sur update
    Salut tout le monde,
    j'aurais bien besoin de votre aide,je développe un application JEE en utilisant le framework JPA et en utilisant JTA pour la transaction (Corrige moi si j'ai dis des bêtises car je suis encore débutant sur JEE ).Le problème c'est que je n'arrive pas a faire un simple update d'un enregistrement(il n' y a aucun modification dans la base de donnée(Oracle)) et le comble c'est que l'ajout et la liste marchent très bien.Je vous donne quelque codes utiles, pour mieux clarifier:

    déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @PersistenceContext(unitName = "ProjStage-ejbPU")
        private EntityManager em;
    Ajout qui marche à merveille:
    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
     
    @Override
        public Intervenant addIntervenant(String matricule,String nom,String tel,String login,String pass,String mail){
        Intervenant inter=new Intervenant();
        inter.setImmatriculeIntervenant(matricule);
        inter.setNomIntervenant(nom);
        inter.setTelIntervenant(tel);
        inter.setLoginIntervenant(login);
        inter.setPasswordIntervenant(pass);
        inter.setMailIntervenant(mail);
         try{
        em.persist(inter);
        return inter;
            }
        catch(Exception e){
        return null;
        }
     
        }
    Et la modification qui ne marche pas:
    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
     
    @Override
        public Intervenant updateIntervenant(java.lang.String matricule, java.lang.String nom, java.lang.String tel, java.lang.String login, java.lang.String pass, java.lang.String mail){
        Intervenant inter=em.find(Intervenant.class, matricule);
        if(inter!=null){
     
        inter.setLoginIntervenant(login);
        inter.setMailIntervenant(mail);
        inter.setNomIntervenant(nom);
        inter.setTelIntervenant(tel);
        inter.setPasswordIntervenant(pass);
        em.merge(inter);
         }
         return inter;
        }
    Je vous remercie d'avance pour votre aide et critique A+

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Salut tout le monde,je cherche encore et encore un solution pour mon problème mais je n 'en trouve pas.
    Mais je me suis dis que le problème de "entityManager.merge" peut être au niveau de la relation inter-entité,puisque j'ai un relation OneToMany:
    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
     
    public class Intervenant implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @Basic(optional = false)
        @Column(name = "IMMATRICULE_INTERVENANT")
        private String immatriculeIntervenant;
        @Basic(optional = false)
        @Column(name = "NOM_INTERVENANT")
        private String nomIntervenant;
        @Basic(optional = false)
        @Column(name = "TEL_INTERVENANT")
        private String telIntervenant;
        @Basic(optional = false)
        @Column(name = "LOGIN_INTERVENANT")
        private String loginIntervenant;
        @Basic(optional = false)
        @Column(name = "PASSWORD_INTERVENANT")
        private String passwordIntervenant;
        @Column(name = "MAIL_INTERVENANT")
        private String mailIntervenant;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "intervenant")
        private List<Intervenir> intervenirList;
         ...
    }
    Mais comment puis-je remédier a ça (modification d'un enregistrement de Intervenant)
    RQ:il n' y a pas encore d'enregistrement dans Intervenir
    Pouvez-vous m'aider,car je suis perdu,ou s'il y a des documents intéressants a propos?

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je pense plutôt à un problème de commit sur la transaction.
    Dans un contexte JTA, c'est le conteneur qui a la charge des transactions, tu ne les gères pas par le code.
    En règle générale, on passe par un EJB stateless pour faire ces traitement, à la sortie de la méthode, la transaction est validée.
    Le code que tu montres fait partie d'un EJB de ce genre ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Je pense plutôt à un problème de commit sur la transaction.
    Dans un contexte JTA, c'est le conteneur qui a la charge des transactions, tu ne les gères pas par le code.
    En règle générale, on passe par un EJB stateless pour faire ces traitement, à la sortie de la méthode, la transaction est validée.
    Le code que tu montres fait partie d'un EJB de ce genre ?
    Donc le problème n'est pas dans le code mais au niveau du conteneur puisqu'il n'effectue pas les transactions normalement dans le cas d'un update.
    Alors comment puis-je corriger ce problème?

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    La question est : c'est un EJB stateless ou stateful ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    La question est : c'est un EJB stateless ou stateful ?
    Salut!
    C'est un EJB stateless,J'ai essayé d'utiliser mon code sur un base de donnée Mysql au lieu d'oracle et ça marche merveille(em.merge),je suis très confondu,mais où est donc la source du problème,et comment y remédier?
    Vos suggestions seront les bienvenues A+

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Est ce que tu as une log avec Oracle ?
    Sinon, tu peux essayer avec em.persist plutôt que em.merge... juste pour en avoir le cœur net
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Est ce que tu as une log avec Oracle ?
    Sinon, tu peux essayer avec em.persist plutôt que em.merge... juste pour en avoir le cœur net
    Salut,
    malheureusement je n'ai pas d'accès sur le log d'oracle,j'ai essayé em.persist et il y a un erreur, selon le log de glassfish:
    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
    49
     
    javax.ejb.EJBException
            at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5119)
            at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5017)
            at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4805)
            at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004)
            at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
            at $Proxy172.edit(Unknown Source)
            at org.cyranno.web.server.InterventionImpl.updateIntervenant(InterventionImpl.java:128)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
            at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
            at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
            at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
            at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
            at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: javax.persistence.EntityExistsException: 
    Exception Description: Cannot persist detached object [org.cyranno.ejb.entities.Intervenant[immatriculeIntervenant=INFO-08]]. 
    Class> org.cyranno.ejb.entities.Intervenant Primary Key> [INFO-08]
    ...
    D'après cette erreur l'ajout avec em.persist fonctionne normalement:je vois ici un tentative de duplication d'un clé primaire d'où l'erreur.
    Aujourd'hui j'ai remarqué qu'il a modification dans ma liste(le view de mon application) mais rien dans la base de donnée et oui encore un mystère.
    J'attends impatiemment vos réponses A+

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    En fait c'est normal qu'il plante puisque l'enregistrement existe déjà, c'était bourrin comme test pour voir ce qui remonte comme erreur... désolé

    Le merge t'envoie une erreur ?
    Si oui, laquelle ?

    Ce qui pourrait poser problème c'est la cascade-all sur une relation non initialisée. Peut-être pourrais-tu essayer de mettre un fetch-type="eager" sur la liste "intervenirList".

    GlassFish utilise TopLink il me semble et j'utilise pour ma par JBoss avec Hibernate, ce n'est pas tout à fait pareil...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    En fait c'est normal qu'il plante puisque l'enregistrement existe déjà, c'était bourrin comme test pour voir ce qui remonte comme erreur... désolé

    Le merge t'envoie une erreur ?
    Si oui, laquelle ?

    Ce qui pourrait poser problème c'est la cascade-all sur une relation non initialisée. Peut-être pourrais-tu essayer de mettre un fetch-type="eager" sur la liste "intervenirList".

    GlassFish utilise TopLink il me semble et j'utilise pour ma par JBoss avec Hibernate, ce n'est pas tout à fait pareil...
    merge n'envoie pas d'erreur,j'ai essayé de mettre fetch=FetchType.EAGER comme vous m'avez prescris mais un exception s'est declenché:java.lang.NullPointerException.
    Je suis a cours d'idée, tous vos propositions de solutions seront les bienvenues A+

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    On va essayer autre chose, peux-tu remplacer l'annotation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "intervenant")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @OneToMany(mappedBy = "intervenant")
    (donc, sans cascade sur les éléments de la liste)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    On va essayer autre chose, peux-tu remplacer l'annotation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "intervenant")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @OneToMany(mappedBy = "intervenant")
    (donc, sans cascade sur les éléments de la liste)
    ça ne marche pas non plus,il n' y a pas d'erreur mais il n'y a pas non plus de modification dans la base,j'ai aussi essayé de gérer les transactions par l'application (BMP) mais sans résultat. Je commence a désespérer,je vais essayer avec un requête sql(update).A+

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Salut tout le monde,
    mon problème n'est pas encore résolut,j'ai essayé de créer un nouveau classe entité qui n'a aucun relation avec d'autre classe,mais le problème de modification persiste encore (par contre l'ajout fonctionne normalement):
    -classe entité
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    @Entity
    @Table(name = "TEST")
    @NamedQueries({
        @NamedQuery(name = "Test.findAll", query = "SELECT t FROM Test t"),
        @NamedQuery(name = "Test.findByIdTest", query = "SELECT t FROM Test t WHERE t.idTest = :idTest"),
        @NamedQuery(name = "Test.findByLibelle", query = "SELECT t FROM Test t WHERE t.libelle = :libelle")})
    public class Test implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @Basic(optional = false)
        @Column(name = "ID_TEST")
        private String idTest;
        @Basic(optional = false)
        @Column(name = "LIBELLE")
        private String libelle;
     
        public Test() {
        }
     
        public Test(String idTest) {
            this.idTest = idTest;
        }
     
        public Test(String idTest, String libelle) {
            this.idTest = idTest;
            this.libelle = libelle;
        }
     
        public String getIdTest() {
            return idTest;
        }
     
        public void setIdTest(String idTest) {
            this.idTest = idTest;
        }
     
        public String getLibelle() {
            return libelle;
        }
     
        public void setLibelle(String libelle) {
            this.libelle = libelle;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (idTest != null ? idTest.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Test)) {
                return false;
            }
            Test other = (Test) object;
            if ((this.idTest == null && other.idTest != null) || (this.idTest != null && !this.idTest.equals(other.idTest))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "org.cyranno.ejb.entities.Test[idTest=" + idTest + "]";
        }
     
    }
    classe EJB session:
    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
     
    @Stateless
    public class test implements testLocal {
        @PersistenceContext(unitName = "ProjStage-ejbPU")
        private EntityManager em;
     
        public void persist(Object object) {
            em.persist(object);
        }
     
        @Override
        public Test ajout(String id,String lib){
        Test t=new Test();
        t.setIdTest(id);
        t.setLibelle(lib);
        em.persist(t);
        return t;
     
        }
     
        @Override
        public void modif(String id,String lib){
        Test t=em.find(Test.class, id);
        t.setLibelle(lib);
        em.merge(t);
     
        }
     
     
    }
    code de servlet de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
             //Test t1=test.ajout("T10", "aaa");
                test.modif("T1", "bbb");
     
            } finally { 
                out.close();
            }
        }
    L'erreur lors de l'appel de modif() est:java.lang.NullPointerException
    Donc je pense que c'est pas un problème au niveau des classes entité,mais je ne vois pas où se situe le problème.
    j'ai besoin de votre aide,je me galère depuis une semaine
    A+

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas ce que tu as dans ta table mais si je me réfère à l'exemple, la NullPointerException s'explique par le fait que l'enregistrement T1 n'existe pas (T10 oui à priori d'après la ligne en commentaire)

    Après un em.find, il faut tester le résultat <> null
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Je ne sais pas ce que tu as dans ta table mais si je me réfère à l'exemple, la NullPointerException s'explique par le fait que l'enregistrement T1 n'existe pas (T10 oui à priori d'après la ligne en commentaire)

    Après un em.find, il faut tester le résultat <> null
    T1 existe dans la base de donnée ,c'est pourquoi j'ai tenté de le modifier,mais j'ai aperçu que em.find me retourne null, je ne sais pas pourquoi?
    Je vous informe encore que mes codes s'exécute parfaitement(merge,persist,find) en utilisant un SGBD mysql,donc a votre avis est-ce possible que ce soit un problème de librairie ou de configuration de glassfish?

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je pense plutôt à un problème lié à Oracle.
    Ceci dit, ce n'est certainement pas une erreur mais plutôt le type de champ de la clé qui est interprété différemment.
    Comme je n'utilise que très rarement Oracle, je ne peux pas te dire mais je te suggère de "padder" ta valeur clé avec des blancs sur la longueur de la clé.
    Bref, si tu as un champ CHAR(8), il faudrait faire un find sur "T1^^^^^^".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 40
    Points
    40
    Par défaut
    Salut!
    Merci beaucoup pour votre aide ça a marché parfaitement,c'était un problème au niveau de la structure de la table sur oracle.J'ai utilisé le type CHAR(vous avez raison sur le type CHAR qui ajoute du blanc jusqu'à la taille fixé,ce qui provoque le résultat Null pour find) donc j'ai simplement changé en VARCHAR2.
    Merci encore A+

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

Discussions similaires

  1. Problème sur un update
    Par bonnet85 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/02/2008, 06h46
  2. Problème lors d'un trigger sur update
    Par yonialhadeff dans le forum Développement
    Réponses: 1
    Dernier message: 09/10/2007, 08h44
  3. Problème sur un UPDATE (T-SQL)
    Par djidji84 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/01/2007, 13h02
  4. Problème d'UPDATE sur un champ d'une table MyISAM
    Par alouette dans le forum Requêtes
    Réponses: 6
    Dernier message: 13/07/2006, 20h17
  5. Problème de update sur un datagrid
    Par jbr_85 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 31/05/2006, 14h57

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