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