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 :

Erreur lors de la persistence JPA+PostgreSQL


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Par défaut Erreur lors de la persistence JPA+PostgreSQL
    Bonjour,

    Je viens vous demander de l'aide parce que je ne trouve plus aucun moyens sur le net.

    Je veux persister sur une BD Postgresql, j'ai modifié le persistence.xml, rajouter un fichier postgresql-ds.xml dans le server/default/deply, rajouté le driver postgres dans le server/lib/

    La création des tables se fait bien, mais quand je veux persister j'ai une jolie erreur et je ne peux rien ajouter dans la BD.

    Voici l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.reflect.UndeclaredThrowableException
    	at $Proxy0.ajoutUtilisateur(Unknown Source)
    	at entities.InsertData.main(InsertData.java:28)
    Caused by: java.rmi.MarshalException: Failed to communicate.  Problem during marshalling/unmarshalling; nested exception is: 
    	java.io.NotSerializableException: entities.Utilisateur
    voici le persistence.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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="serveurAppliJPA">
    	<!-- le fournisseur JPA est Hibernate -->
    		<provider>org.hibernate.ejb.HibernatePersistence</provider>
    	<jta-data-source>java:/PGDS</jta-data-source>
    		<mapping-file>META-INF/orm.xml</mapping-file>
    		<properties>
    		<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
    			<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    		</properties>
    	</persistence-unit>
    </persistence>
    le postgresql-ds.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <datasources>
      <local-tx-datasource>
        <jndi-name>PGDS</jndi-name>
        <connection-url>
        jdbc:postgresql://localhost:5432/baseTest
        </connection-url>
        <driver-class>org.postgresql.Driver</driver-class>
        <user-name>postgres</user-name>
        <password>XXXX</password>
      </local-tx-datasource>
    </datasources>
    enfin le code d'insertion
    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
    public class InsertData {
     
    	public static void main(String[] args) {
    	      InitialContext ctx;
    		try {
    			ctx = getInitialContext();
    			CompteDAO lecompte = (CompteDAO) ctx.lookup("CompteDAOBean/remote");
     
    		      Utilisateur unUser = new Utilisateur();
    		      unUser.setIdUtilisateur(2);
    		      unUser.setEmail("lkljk");
    		      unUser.setPwd("jkj");
     
    		      lecompte.ajoutUtilisateur(unUser);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	@SuppressWarnings("unchecked")
    	private static InitialContext getInitialContext() throws Exception{
    		Hashtable props = new Hashtable();
    		props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
    		props.put("java.naming.factoy.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
    		props.put("java.naming.provider.url", "localhost");
     
    		return new InitialContext(props);
     
    	}
    }
    Un grand merci

  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
    Fais voir ta classe Utilisateur !
    Apparement elle n'est pas Serializable.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Par défaut
    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
    package entities;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
     
    @Entity
    public class Utilisateur {
     
    	private int idUtilisateur;
    	private String email;
    	private String pwd;
    	private List <Projet> projets;
     
    	public Utilisateur(String email, String pwd) {
    		this.email = email;
    		this.pwd = pwd;
    		this.projets=new ArrayList<Projet>();
    	}
     
    	public Utilisateur() {
    		this.email = null;
    		this.pwd = null;
    	}
     
    	@Id @GeneratedValue
    	@Column(name="IDUTILISATEUR")
    	public int getIdUtilisateur() {
    		return idUtilisateur;
    	}
    	public void setIdUtilisateur(int id) {
    		this.idUtilisateur = id;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getPwd() {
    		return pwd;
    	}
    	public void setPwd(String pwd) {
    		this.pwd = pwd;
    	}
    	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    	@JoinColumn(name="IDUTILISATEUR")
    	public List<Projet> getListeProjet(){
    		return projets;
    	}
     
    	public void setListeProjet(List<Projet> projets){
    		this.projets = projets;
    	}
     
    	public Projet getProjets(int idProjet) {
    		return projets.get(idProjet);
    	}
     
    	public void setProjets(Projet leProjet) {
    		this.projets.add(leProjet);
    }
    	}
    Justement dans les bouqins c'est écrit qu'il faut que se soit serializable mais dans les exemple ça n'est jamais serializable!

    Sinon j'ai vu sur d'autres forum que ça pourrait être mal référencé ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteDAO lecompte = (CompteDAO) ctx.lookup("CompteDAOBean/remote");
    Du coup j'ai rajouté le nom du package appartentant aux bean comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteDAO lecompte = (CompteDAO) ctx.lookup("dao/CompteDAOBean/remote");
    du coup j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.naming.NameNotFoundException: dao not bound

  4. #4
    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
    Il te manquerait pas un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <class>entities.Utilisateur </class>
    dans ton persistence.xml ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Par défaut
    D'après ce que j'ai compris l'attribut class n'est pas obligatoire? J'ai essayé et j'ai toujours le meme probleme.

  6. #6
    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 as bien defini ta classe Projet ?

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

Discussions similaires

  1. Message d'erreur lors de la persistance
    Par clecle dans le forum JSF
    Réponses: 1
    Dernier message: 05/11/2014, 12h36
  2. erreur lors de la persistance
    Par LOGKiller dans le forum Hibernate
    Réponses: 0
    Dernier message: 17/10/2009, 10h10
  3. Erreur lors la lecture d'une table PostgreSQL
    Par choko83 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 30/04/2008, 14h56
  4. [PostgreSQL] [PostGreSQL] Obtention d'une erreur lors de l'exécution d'une requête
    Par cbombabill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2008, 11h56
  5. erreur fatale lors de l'installation de PostgreSQL
    Par caro_caro dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/02/2008, 18h51

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