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 :

NullPointerException lors d'appel persist


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut NullPointerException lors d'appel persist
    Bonsoir à tous,

    désolé je vous innonde de mes questions...mais je n'ai rien trouvé à ce sujet non plus...

    j'ai donc un EJB Entity déployé sous JBoss 4.0.5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    21:00:52,140 INFO  [SchemaUpdate] fetching database metadata
    21:00:52,140 INFO  [SchemaUpdate] updating schema
    21:00:52,187 INFO  [TableMetadata] table found: PRJ.keepalivemodule
    21:00:52,187 INFO  [TableMetadata] columns: [modulename, period, retry, kareceived, end, katotal, id]
    21:00:52,187 INFO  [TableMetadata] foreign keys: []
    21:00:52,187 INFO  [TableMetadata] indexes: [primary]
    21:00:52,187 INFO  [SchemaUpdate] schema update complete
    21:00:52,187 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory,java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
    21:00:52,187 INFO  [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=PRJServer.ear,jar=PRJJ2EEEJB.jar,name=LoginModuleBean,service=EJB3
    with dependencies:
    21:00:52,187 INFO  [JmxKernelAbstraction]       persistence.units:ear=PRJServer.ear,jar=PRJJ2EEEJB.jar,unitName=KeepAliveModule
    le fichier persistence.xml associé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <persistence version="1.0">
       <persistence-unit name="KeepAliveModule">
           <jta-data-source>java:/MySqlDS</jta-data-source>
           <provider>org.hibernate.ejb.HibernatePersistence</provider>
           <class>com.prj.entities.KeepAliveModule</class>
           <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
                <property name="hibernate.hbm2ddl.auto" value="update"/>
           </properties>
       </persistence-unit>
    </persistence>
    voici 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
     
    @Entity
    @Table(name="KeepAliveModule")
    public class KeepAliveModule implements Serializable  {
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	private int id;
    	public int getId(){return this.id;}
     
    	private String moduleName;
    	private int period;
    	private int end;
    	private int KAReceived;
    	private int KATotal;
    	private int retry;
            ....
    Et voici la méthode de mon EJB Session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public void add(KeepAliveModule module){
    		try{
    		module.display();
    		em.persist(module);
    		}catch(Exception e){log.error("Error while adding KA: "+e.toString());}
    	}
    lors de l'exécution, j'ai une exception lors de l'appel à persist():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    Pouvez vous m'aider ?
    Je vous remercie.

    Tiamat.

  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
    Billets dans le blog
    1
    Par défaut
    Peux-tu poster les classes (complètes) KeepAliveModule et KeepAliveModuleFacade ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut
    bien sur, les voicis:

    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
     
    @Entity
    @Table(name="KeepAliveModule")
    public class KeepAliveModule implements Serializable  {
     
    	private static final long serialVersionUID = 1L;
    	private static final Logger log = Logger.getLogger("EJB");
    	@Id
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	private int id;
    	public int getId(){return this.id;}
     
    	private String moduleName;
    	private int period;
    	private int end;
    	private int KAReceived;
    	private int KATotal;
    	private int retry;
     
     
     
    	public KeepAliveModule(){
    		super();
    	}
     
    	public KeepAliveModule(String ModuleName, int period){
     
    		this.moduleName = ModuleName;
    		this.period = period;
    		this.end = 0;
    		this.KAReceived = 0;
    		this.KATotal = 0;
    		this.retry = 3;
    	}
     
     
    	public String getModuleName(){return this.moduleName;}
    	public int getPeriod(){return this.period;}
    	public int getEnd(){return this.end;}
    	public int getKAReceived(){return this.KAReceived;}
    	public int getKATotal(){return this.KATotal;}
    	public int getRetry(){return this.retry;}
     
    	public void setId(int id){this.id = id;}
    	public void setModuleName(String moduleName){this.moduleName = moduleName;}
    	public void setPeriod(int period){this.period = period;}
    	public void setEnd(int end){this.end = end;}
    	public void setKAReceived(int KAReceived){this.KAReceived = KAReceived;}
    	public void setKATotal(int KATotal){this.KATotal = KATotal;}
    	public void setRetry(int retry){this.retry = retry;}
     
    	public void display(){
    		log.info("KA for :"+moduleName+" Period:"+period+" End:"+end+" KAReceived:"+KAReceived+" KATotal:"+KATotal+" Retry:"+retry);
    	}
    par contre je n'ai pas de Facade.
    est ce que cela est obligatoire ?

    Merci de ton aide.

  4. #4
    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
    Billets dans le blog
    1
    Par défaut
    Ce n'est pas une classe correcte, les annotations se placent au niveau des getter... (ci-joint un exemple)
    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
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    package hibernate.objects;
     
    // Generated 16 oct. 2007 11:07:56 by Hibernate Tools 3.1.0.beta5
    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
     
    /**
     * Personne generated by hbm2java
     */
    @Entity
    @Table(name = "personne", catalog = "test", uniqueConstraints = {})
    public class Personne implements java.io.Serializable
    {
        // Fields    
        private int idPersonne;
        private Personne personne;
        private String nom;
        private String prenom;
        private String sexe;
        private Date crtDate;
        private byte age;
        private Set<Personne> personnes = new HashSet<Personne>(0);
     
        // Constructors
        /** default constructor */
        public Personne()
        {
        }
     
        /** minimal constructor */
        public Personne(int idPersonne, byte age)
        {
            this.idPersonne = idPersonne;
            this.age = age;
        }
     
        /** full constructor */
        public Personne(int idPersonne, Personne personne, String nom, String prenom, String sexe, Date crtDate, byte age,
                Set<Personne> personnes)
        {
            this.idPersonne = idPersonne;
            this.personne = personne;
            this.nom = nom;
            this.prenom = prenom;
            this.sexe = sexe;
            this.crtDate = crtDate;
            this.age = age;
            this.personnes = personnes;
        }
     
        // Property accessors
        @Id
        @Column(name = "idPersonne", unique = true, nullable = false, insertable = true, updatable = true)
        public int getIdPersonne()
        {
            return this.idPersonne;
        }
     
        public void setIdPersonne(int idPersonne)
        {
            this.idPersonne = idPersonne;
        }
     
        @ManyToOne(cascade = {}, fetch = FetchType.LAZY)
        @JoinColumn(name = "idParent", unique = false, nullable = true, insertable = true, updatable = true)
        public Personne getPersonne()
        {
            return this.personne;
        }
     
        public void setPersonne(Personne personne)
        {
            this.personne = personne;
        }
     
        @Column(name = "Nom", unique = false, nullable = true, insertable = true, updatable = true, length = 45)
        public String getNom()
        {
            return this.nom;
        }
     
        public void setNom(String nom)
        {
            this.nom = nom;
        }
     
        @Column(name = "Prenom", unique = false, nullable = true, insertable = true, updatable = true, length = 45)
        public String getPrenom()
        {
            return this.prenom;
        }
     
        public void setPrenom(String prenom)
        {
            this.prenom = prenom;
        }
     
        @Column(name = "Sexe", unique = false, nullable = true, insertable = true, updatable = true, length = 1)
        public String getSexe()
        {
            return this.sexe;
        }
     
        public void setSexe(String sexe)
        {
            this.sexe = sexe;
        }
     
        @Column(name = "crtDate", unique = false, nullable = true, insertable = true, updatable = true, length = 19)
        public Date getCrtDate()
        {
            return this.crtDate;
        }
     
        public void setCrtDate(Date crtDate)
        {
            this.crtDate = crtDate;
        }
     
        @Column(name = "age", unique = false, nullable = false, insertable = true, updatable = true, precision = 2, scale = 0)
        public byte getAge()
        {
            return this.age;
        }
     
        public void setAge(byte age)
        {
            this.age = age;
        }
     
        @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "personne")
        public Set<Personne> getPersonnes()
        {
            return this.personnes;
        }
     
        public void setPersonnes(Set<Personne> personnes)
        {
            this.personnes = personnes;
        }
    }
    Tu n'utilises pas un outil pour générer ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Est-ce que ton "em" est à null ?
    Est-ce qu'il est bien injecté par annotation ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut
    non je n'utilise pas d'outil pour générer...
    WTP le fait ?

    et pour répondre à fr1man, mon em est bien annoté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	@PersistenceContext(name="KeepAliveModule")
    	EntityManager em;
    je reprend mes annotations sur les getters et je reviens vers vous.
    Merci.

  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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tiamat Voir le message
    par contre je n'ai pas de Facade.
    est ce que cela est obligatoire ?
    J'avais oublié celle là...

    Oui, il faudrait une facade (elle peut avoir un autre nom) pour les méthodes d'extraction / persistence et le référencement de l'entity manager.
    Mais bon, ça n'est pas obligatoire... tu pourrais le faire par une classe applicative aussi (c'est pas très propre, au mon sens)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut
    oui j'ai bien un EJB Session qui gère les méthodes d'extraction/persistence cf post précédent (méthode add).

    voici la déclaration de l'EJB:

    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
     
     
    public class KeepAliveBean extends Thread implements IKeepAlive {
     
    	@PersistenceContext(name="KeepAliveModule")
    	EntityManager em;
    	KeepAliveModule KA = null;
     
     
    	public void run(){
     
    		start();
    	}
     
    	public void add(KeepAliveModule module){
    		try{
    		module.display();
    		em.persist(module);
    		}catch(Exception e){log.error("Error while adding KA: "+e.toString());}
    	}
    par contre fr1man, j'ai bien changé mes annotations de la déclaration de mon EJB entity mais j'ai toujours nullpointerException:

    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
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	@Column(name = "id", unique = true, nullable = false, insertable = true, updatable = true)
    	public int getId(){return this.id;}
     
    	@Column(name = "moduleName", unique = false, nullable = true, insertable = true, updatable = true, length = 45)
    	public String getModuleName(){return this.moduleName;}
     
    	@Column(name = "period", unique = false, nullable = true, insertable = true, updatable = true)
    	public int getPeriod(){return this.period;}
     
    	@Column(name = "end", unique = false, nullable = true, insertable = true, updatable = true)
    	public int getEnd(){return this.end;}
     
    	@Column(name = "KAReceived", unique = false, nullable = true, insertable = true, updatable = true)
    	public int getKAReceived(){return this.KAReceived;}
     
    	@Column(name = "KATotal", unique = false, nullable = true, insertable = true, updatable = true)
    	public int getKATotal(){return this.KATotal;}
     
    	@Column(name = "Retry", unique = false, nullable = true, insertable = true, updatable = true)
    	public int getRetry(){return this.retry;}

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut
    Vous utilisez quel outil pour générer les annotations ?

Discussions similaires

  1. NullPointerException lors d'un appel à un DAO.
    Par Seb1492 dans le forum Hibernate
    Réponses: 0
    Dernier message: 02/08/2010, 18h54
  2. Réponses: 0
    Dernier message: 28/05/2009, 18h15
  3. Réponses: 6
    Dernier message: 16/04/2009, 16h30
  4. NullPointerException lors du persist
    Par Baptiste Wicht dans le forum JPA
    Réponses: 4
    Dernier message: 13/05/2008, 14h57
  5. Réponses: 0
    Dernier message: 26/12/2007, 17h28

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