Bonjour,

j'essaye de faire un petit programme avec GWT et JPA avec Hibernate, en utilisant Gilead pour ceci. Mon problème est que mon code de ma servlet fonctionne parfaitement dans les tests unitaires, mais dès que j'y accède via le mécanisme de RPC de GWT, j'obtiens l'exception : java.lang.IllegalArgumentException: Unknown entity: fr.atatorus.bn.entity.User

Voici les bouts de code qui pose problème :
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
 
public class UserServiceImpl extends PersistentRemoteService implements UserService {
...
    public UserServiceImpl ( ) {
        setBeanManager (ApplicationContext.getInstance ( ).getBeanManager ( ));
    }
 
    public User createUser (String name, String password, String mail) throws Exception {
 
        EntityManager entityManager = ApplicationContext.getInstance ( )
                                                        .getEntityManagerFactory ( )
                                                        .createEntityManager ( );
        EntityTransaction tx = entityManager.getTransaction ( );
        tx.begin ( );
        IUserManager userManager = UserManagerFactory.buildUserManager (entityManager);
 
        User user = null;
        try {
            user = userManager.createUser (name, password, mail);
        } catch (UserException e) {
            tx.rollback ( );
            entityManager.close ( );
            e.printStackTrace ( );
            throw new Exception (e.getMessage ( ));
        }
 
        entityManager.clear ( );
 
        if (tx.isActive ( ))
            tx.commit ( );
        entityManager.close ( );
 
        return user;
    }
...
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
 
public class UserManagerJPA implements IUserManager {
 
    private EntityManager entityManager;
 
    UserManagerJPA (EntityManager em) {
        entityManager = em;
    }
 
    public User createUser (String userName, String userPass, String userEMail) throws UserException {
 
...
 
        User user = null;
 
        try {
            user = new User ( );
            user.setName (userName);
            user.setHashPwd (BCrypt.hashpw (userPass, BCrypt.gensalt ( )));
            user.setMail (userEMail);
            entityManager.persist (user);
        } catch (Exception e) {
            e.printStackTrace ( );
            throw new UserException ("Impossible de créer l'utilisateur dans la base de données.");
        }
 
        return user;
    }
...
La ligne qui pose problème est : entityManager.persist (user);
Si je la commente, tout fonctionne, mais mon nouvel utilisateur n'est évidemment pas écrit dans la base de données.

Un grand merci à tous ceux qui m'aideront.