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 :

Erreur lors de l'exécution de la méthode create


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 14
    Points
    14
    Par défaut Erreur lors de l'exécution de la méthode create
    Bonjour,

    j'utilise la technologie ejb3 pour pour creer une application dont le role d'inserer des données dans une base de données (mysql)
    j'ai crée une entity bean qui s'appelle Vol pour la table VOL:
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
     
    package ejb;
     
    import java.io.Serializable;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
     
    /**
     *
     * @author Administrateur
     */
    @Entity
    @Table(name = "vol")
    @NamedQueries({@NamedQuery(name = "Vol.findAll", query = "SELECT v FROM Vol v"), @NamedQuery(name = "Vol.findById", query = "SELECT v FROM Vol v WHERE v.id = :id"), @NamedQuery(name = "Vol.findByDepart", query = "SELECT v FROM Vol v WHERE v.depart = :depart"), @NamedQuery(name = "Vol.findByDestination", query = "SELECT v FROM Vol v WHERE v.destination = :destination"), @NamedQuery(name = "Vol.findByHeure", query = "SELECT v FROM Vol v WHERE v.heure = :heure"), @NamedQuery(name = "Vol.findByDatevol", query = "SELECT v FROM Vol v WHERE v.datevol = :datevol"), @NamedQuery(name = "Vol.findByCompagnie", query = "SELECT v FROM Vol v WHERE v.compagnie = :compagnie"), @NamedQuery(name = "Vol.findByNVol", query = "SELECT v FROM Vol v WHERE v.nVol = :nVol"), @NamedQuery(name = "Vol.findByCommentaire", query = "SELECT v FROM Vol v WHERE v.commentaire = :commentaire")})
    public class Vol implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "id")
        private Short id;
        @Column(name = "depart")
        private String depart;
        @Column(name = "destination")
        private String destination;
        @Column(name = "heure")
        private String heure;
        @Column(name = "datevol")
        private String datevol;
        @Column(name = "compagnie")
        private String compagnie;
        @Column(name = "n°vol")
        private Integer nVol;
        @Column(name = "commentaire")
        private String commentaire;
     
        public Vol() {
        }
     
        public Vol(Short id) {
            this.id = id;
        }
     
        public Short getId() {
            return id;
        }
     
        public void setId(Short id) {
            this.id = id;
        }
     
        public String getDepart() {
            return depart;
        }
     
        public void setDepart(String depart) {
            this.depart = depart;
        }
     
        public String getDestination() {
            return destination;
        }
     
        public void setDestination(String destination) {
            this.destination = destination;
        }
     
        public String getHeure() {
            return heure;
        }
     
        public void setHeure(String heure) {
            this.heure = heure;
        }
     
        public String getDatevol() {
            return datevol;
        }
     
        public void setDatevol(String datevol) {
            this.datevol = datevol;
        }
     
        public String getCompagnie() {
            return compagnie;
        }
     
        public void setCompagnie(String compagnie) {
            this.compagnie = compagnie;
        }
     
        public Integer getNVol() {
            return nVol;
        }
     
        public void setNVol(Integer nVol) {
            this.nVol = nVol;
        }
     
        public String getCommentaire() {
            return commentaire;
        }
     
        public void setCommentaire(String commentaire) {
            this.commentaire = commentaire;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.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 Vol)) {
                return false;
            }
            Vol other = (Vol) object;
            if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "ejb.Vol[id=" + id + "]";
        }
     
    }


    puis j'ai créer un bean qui s'apelle facadeVol qui sert à realiser les actions de persistences voici le code :


    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
    package ejb;
     
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import javax.ejb.EJB;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
     
    @Stateless
    public class VolFacade implements VolFacadeLocal {
        @PersistenceContext
        private static EntityManager em;
     
        @EJB
        public  Vol vol;
     
        public  void create(Vol vol) {
            em.getTransaction().begin();
            em.persist(vol);
            em.getTransaction().commit();
        }
     
        public void edit(Vol vol) {
            em.getTransaction().begin();
            em.merge(vol);
            em.getTransaction().commit();
        }
     
        public void remove(Vol vol) {
            em.getTransaction().begin();
            em.remove(em.merge(vol));
            em.getTransaction().commit();
        }
     
        public Vol find(Object id) {
            return em.find(Vol.class, id);
        }
     
        public List<Vol> findAll() {
            return em.createQuery("select object(o) from Vol as o").getResultList();
        }
     
     
    public static void main(String[] args){
        Vol voll = new Vol();
        voll.setDepart("dddddd");
        voll.setDestination("fgfdd");
        VolFacade vf =new VolFacade();
        vf.create(voll);
     
    }
     
    }
    mais le probleme il ya une erreur d'execution de cette classe : Exception in thread "main" java.lang.NullPointerException
    au niveau de la methode create()
    svp quelqu'un peut m'aider
    merci d'avance

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    retire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @EJB
    public  Vol vol;
    Pourquoi l'as-tu mis d'ailleurs ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    je l'ai mis pour faire l'injection des dependances.
    je l'ai enlevé mais le probleme reste le meme
    quelqu'un peut m'aider

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    lors de deploiment de projet voici l'erreur qui apparait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JDO76614 : Exceptions SQL lors du déploiement :
            JDO76609 : SQLException lors de l'exécution de l'instruction "CREATE TABLE vol (id SMALLINT AUTO_INCREMENT NOT NULL, heure VARCHAR(255), datevol VARCHAR(255), depart VARCHAR(255), compagnie VARCHAR(255), n°vol INTEGER, destination VARCHAR(255), commentaire VARCHAR(255), PRIMARY KEY (id))" : com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '°vol INTEGER, destination VARCHAR(255), commentaire VARCHAR(255), PRIMARY KEY (i' at line 1
    et voici le script avec lequel j'ai crée ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE Vol (
        id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
        depart VARCHAR (50),
        destination VARCHAR (50),
        heure varchar (50),
        datevol varchar (50),
        compagnie VARCHAR (25),
        n°vol int (50),
        commentaire VARCHAR(100),
        PRIMARY KEY (id)
                        );
    je vois pas ou se trouve l'erreur exactement

  5. #5
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut La réponse est dans la question
    Bonjour,

    C'est Mysql qui te répond que n°vol connait pas
    et je le comprends le ° pas bon

    utilise numero_vol par exemple

    olivier

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    j'ai corrigé l'erreur de deploiment de projet mais l'erreur de la classe FacadeVol persiste encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    run-main:
    Exception in thread "main" java.lang.NullPointerException
            at ejb.VolFacade.create(VolFacade.java:23)
            at ejb.VolFacade.main(VolFacade.java:46)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)
    je vois pas ou existe l'erreur exactement

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ce doit être em qui est null, tu as vérifié avec le debug ?
    Peux-tu montrer le fichier persistence.xml ?

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    oui bien sur le voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <?xml version="1.0" encoding="UTF-8" ?> 
    - <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    - <persistence-unit name="OACA-ejbPU" transaction-type="JTA">
      <provider>oracle.toplink.essentials.PersistenceProvider</provider> 
      <jta-data-source>voldb</jta-data-source> 
      <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    - <properties>
      <property name="toplink.ddl-generation" value="drop-and-create-tables" /> 
      </properties>
      </persistence-unit>
      </persistence>

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Avec un contexte JTA, on ne gère pas les transactions comme tu le fais, c'est le conteneur qui s'en charge.
    Là, comme il s'agit d'un stateless, c'est à la sortie de la méthode que la transaction sera "commitée".

    Ceci dit, vérifie tout de même que "em" n'est pas NULL avec un debugger...

  10. #10
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 188
    Points
    188
    Par défaut
    salut tous le monde ,


    tu peux changer

    @PersistenceContext
    private static EntityManager em;


    par

    @PersistenceContext(unitName = "OACA-ejbPU")
    private static EntityManager em;

Discussions similaires

  1. Erreur lors de l'exécution
    Par ami_in55 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 02/02/2007, 14h08
  2. Erreur lors de l'exécution d'un prog (petit)
    Par zafo dans le forum Delphi
    Réponses: 9
    Dernier message: 26/08/2006, 00h07
  3. Erreur lors de l'exécution
    Par pochsdeluc dans le forum C++
    Réponses: 3
    Dernier message: 05/07/2006, 15h35
  4. [tableau] erreur lors de l'exécution
    Par michel_frederic dans le forum C++
    Réponses: 3
    Dernier message: 16/02/2006, 02h25
  5. [JMF][débutant] Erreur lors de l'exécution
    Par july dans le forum Multimédia
    Réponses: 7
    Dernier message: 19/01/2006, 11h30

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