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

JPA Java Discussion :

Aide sur un projet JEE avec EclipseLink


Sujet :

JPA Java

  1. #1
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut Aide sur un projet JEE avec EclipseLink
    Bonjour à tous,

    Débutant en JEE, je me suis lancé dans un projet Libre pour gérer des projets. Mais voilà, je n'ai jamais vraiment fait de JPA, et j'ai des erreurs bizarres. Je crée donc ce topic à la recherche d'une aide pour résoudre les problèmes que je rencontre, mais aussi éventuellement pour me donner des conseils sur la manière global dont le code est orienté. Comme c'est mon premier projet en JEE, je ne fais certainement pas tout comme il faut.

    Contexte: JEE, JPA (EclipseLink), MySQL, Maven, Glassfish (si vous avez un serveur moins lourd à me conseiller d'ailleurs...)

    Le code étant accessible sur Github, je vous propose d'utiliser des pointeurs vers les fichiers plutôt que de copier coller trop de code ici.

    Mon premier problème, dès la servlet Index, un appel à PersonFacade.count() qui lève une exception (PersonFacade hérite d'AbstractFacade) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ATTENTION: EJB5184:A system exception occurred during an invocation on EJB PersonFacade, method: public int fr.xinta.atemia.db.facade.AbstractFacade.count()
    ATTENTION: javax.ejb.EJBException
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caused by: java.lang.IllegalArgumentException: No [EntityType] was found for the key class [fr.xinta.atemia.db.entity.Person] in the Metamodel - please verify that the [Entity] class was referenced in persistence.xml using a specific <class>fr.xinta.atemia.db.entity.Person</class> property or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element.
    Or, mon persistence.xml contient bien <exclude-unlisted-classes>false</exclude-unlisted-classes>... Où est donc le problème ?

  2. #2
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    J'ai une autre erreur que j'avais commenté pour obtenir celle du dessus. Visiblement, il n'est pas possible d'avoir ceci comme attribut d'une entité :
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @OneToMany
    List<int[]> job;

    Comment est-ce que je peux faire pour obtenir l'équivalent en étant valide JPA ?

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,
    Avant de répondre à ta dernière question, peut on savoir ce que tu veux modéliser fonctionnellement? une réponse en français suffira à ce que tu comprennes ton erreur modélisée techniquement

  4. #4
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Pour mon premier problème, j'ai remplacé

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        private EntityManager entityManager;
     
        public EntityManager getEntityManager() {
            if (entityManager == null) {
                entityManager = Persistence.createEntityManagerFactory(PERSISTENCE).createEntityManager();
            }
            return this.entityManager;
        }

    Par
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        @PersistenceContext(unitName = PERSISTENCE)
        private EntityManager entityManager;
     
        public EntityManager getEntityManager() {
            return this.entityManager;
        }

    et ça ne crashe plus.

  5. #5
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Pour mon second problème, c'est extrait de l'entité Week. En gros, pour chaque semaine, chaque personne impliqué dans le projet a un certain nombre de jours affecté à une des 5 tâches possibles. J'ai donc dans ma classe Week un ArrayList dont l'index correspond au numéro de la personne, et correspondant à cette personne, un tableau d'entier, dont l'index va de 0 à 4 (qui correspondent aux 5 tâches possibles, un ENUM) et dont la valeur correspond aux nombres de jours affectés à cette tâche pour la semaine (d'ailleurs, maintenant que j'y pense, j'aurais pu mettre un short vu que ça dépassera jamais 5).

    Au début j'avais fait tout ça de manière beaucoup plus propre avec des HashMap, mais comme je galère avec JPA a persisté tout ça, j'ai mis une liste en pensant que ça serait plus simple...

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    Pour mon second problème, c'est extrait de l'entité Week. En gros, pour chaque semaine, chaque personne impliqué dans le projet a un certain nombre de jours affecté à une des 5 tâches possibles. J'ai donc dans ma classe Week un ArrayList dont l'index correspond au numéro de la personne, et correspondant à cette personne, un tableau d'entier, dont l'index va de 0 à 4 (qui correspondent aux 5 tâches possibles, un ENUM) et dont la valeur correspond aux nombres de jours affectés à cette tâche pour la semaine (d'ailleurs, maintenant que j'y pense, j'aurais pu mettre un short vu que ça dépassera jamais 5).

    Au début j'avais fait tout ça de manière beaucoup plus propre avec des HashMap, mais comme je galère avec JPA a persisté tout ça, j'ai mis une liste en pensant que ça serait plus simple...
    Bonjour @Flaburgan, visiblement tu as des soucis de conception indépendant du J2EE.Il manque une vision Objet dans ton approche.Le mapping JPA s'appuie essentiellement sur des diagrammes de classes issus d'une conception Objet. Dans ton cas, si j'ai bien compris, Un Job (Tache) doit être affecté à une Personne, et dans une Semaine (Week), on doit executer n (5 en occurrence) Job (Tache), Il apparait donc une relation entre 3 Objets. Je te proposerai pour un début de faire un petit diagramme de Classe UML de cette approche, avant d'aborder le mapping JPA.

  7. #7
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Comme dit au dessus, j'avais modéliser tout ça correctement (et différemment) avec des HashMaps. Le problème c'est que j'ai pas réussi à utiliser JPA avec mes HashMaps de l'époque, donc je me suis dit que ce serait peut être plus facile à faire uniquement avec des listes (et un tableau) même si du coup mon code ressemble à de la bidouille...

    En un mot : pour chaque personne, pour chaque semaine, pour chaque tâche, on a un nombre de jour de la semaine affectés à cette tâche.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/05/2010, 10h01
  2. aide sur un projet de carte a puce
    Par abdel5 dans le forum C++
    Réponses: 1
    Dernier message: 09/01/2007, 23h12
  3. Aide sur un projet
    Par riadh_ado dans le forum MFC
    Réponses: 1
    Dernier message: 08/07/2006, 20h42
  4. Aide sur ouverture de fichier avec access
    Par FusionR dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/06/2004, 12h02

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