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

GWT et Vaadin Java Discussion :

Pb avec Hibernate : impossible de persister mon entité


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Par défaut Pb avec Hibernate : impossible de persister mon entité
    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.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    ton entity manager ne serait-il pas null ? que fait exactement ton setBeanManager ?

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Par défaut
    Non, j'ai vérifié mon entityManager n'est pas null.
    Quant à mon setBeanManager(), il est là pour mettre le PersistentBeanManager de Gilead. Je dois dire cependant que je ne connais pas Gilead, et que je l'utilise en suivant bêtement les exemples de la doc.
    Si je me suis mis à l'utiliser, c'est que j'avais le même problème avant, et j'eséprais le résoudre avec.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Je ne connais pas du tout Gilead ou son fonctionemment utilise il de l injection de dépendence `?

  5. #5
    Membre expérimenté

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Par défaut
    Je découvre à peine aussi, je ne peux pas te dire. Je pense que oui, les exemples tournent avec Spring, que je ne connais que très peu également.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Par défaut
    J'ai fini par résoudre mon problème en définissant le mapping de mon entité dans le fichier orm.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
     
        <entity class="fr.atatorus.bn.entity.User">
            <attributes>
                <id name="id">
                    <generated-value/>
                </id>
            </attributes>
        </entity>
     
    </entity-mappings>
    J'aimerais quand même savoir comment faire pour me passer de ce fichier, et déclarer seulement le mapping avec les annotations, que je trouve plus pratiques. Si quelqu'un a une idée, je suis preneur.

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

Discussions similaires

  1. [2.x] Impossible de Persister une entité
    Par hx.jonathan dans le forum Symfony
    Réponses: 10
    Dernier message: 03/10/2011, 18h37
  2. gestion de la base données mysql avec hibernate impossible
    Par douaa.flower dans le forum Hibernate
    Réponses: 5
    Dernier message: 18/04/2011, 15h04
  3. Connexion à la base impossible avec hibernate
    Par jason69 dans le forum Hibernate
    Réponses: 3
    Dernier message: 29/06/2007, 14h23
  4. Réponses: 1
    Dernier message: 01/05/2007, 16h18
  5. Réponses: 3
    Dernier message: 19/05/2006, 20h38

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