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

Java EE Discussion :

IllegalArgumentException : Object not know Entity lors d'un persist


Sujet :

Java EE

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Par défaut IllegalArgumentException : Object not know Entity lors d'un persist
    Bonjour a tous,
    je vais essayer d'exposer mon probleme de facon detailler, ne prenaient donc pas peur en le lisant.

    Tout d'abord, j'utilise un serveur glassfish2.1 avec des EJB3, sous net bean6.5, avec une jdk 1.6.0.13 sous Vista(c'est un bordel pas possible, mais ce n'est as moi qui choisi, et je ne parle pas de la stabilite du truc!!!)

    Donc voici le soucis:

    VOici un extrait de mon diagramme de classe. (Attention, PrintBean s'est transforme en RelacheBean).

    • RelacheBean est mon Bean Stateless.
    • RelacheBean Remote est l'interface Remote
    • PrintBeanFactory est une factory qui me permet d'instancier mes classes Dummy ou Default.
    • IPrintList est une interface
    • DummyPrintList et DefaultPrintList est une classe qui implemente IPrintList.


    Le but de tout ceci, permettre a DummyPrintList ou DefaultPrintList d'utiliser l'entityManager.
    Voici mon fichier de persistence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?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="LgppBusinessLayerPU" transaction-type="JTA">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <jta-data-source>jdbc/lgppDatasource</jta-data-source>
        <properties>
          <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
        </properties>
      </persistence-unit>
    </persistence>
    Voici l'appel a DummyPrintList depuis RelacheBean en passant par la factory:
    RelacheBean
    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
    @Stateless
    public class RelacheBean extends BaseService implements RelacheRemote {
    ....
    /* ********************************
         * Construct
         ******************************** */
        public RelacheBean() throws Exception {
        }
     
        @PostConstruct
        public void initBean(){
            logger.debug("initBean[PostConstruct]");
            PrintBeanFactory factory=PrintBeanFactory.getPrintFactory();
            printList=factory.getPrintList();
            ptList=factory.getptList();
            logger.debug("initBean : Factory created");
        }
    .....
    }

    PrintBeanFactory
    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
    public abstract class  PrintBeanFactory implements IPrintConstants{
     
        private final static String env = ENV_TEST;
     
        public PrintBeanFactory() {
        }
     
        public final static PrintBeanFactory getPrintFactory()
        {
            if (env.equalsIgnoreCase(ENV_TEST))
                return new DummyPrintBeanFactory();
            else
                return new DefaultPrintBeanFactory();
        }
     
     
     
        /**
         * Getter
         */
     
        public IPrintList getPrintList() {
            return new DummyPrintList ();
        }
    }
    Et voici le code de mon Dummy:
    DummyPrintList
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class DummyPrintList implements IPrintList{
    
    public DummyPrintList() {
                Je souhaite faire un em.persist ICI!!!!
    }
    }
    Bon j'ai simplifier pas mal d'etapes.

    Pour faire ce persist, j'ai essayer de commencer par faire passer la reference de mon EntityManager a ma factory qui le passait lui meme au construct de mon Dummy, mais je me tapais une TransactionException.

    J'ai alors essayer de recreer mon entitymanager via un lookup, nikel l'entityManager se cree, mais des que j'essaye de faire un persist d'une de mes entity, je me tape un IllegalArgumentException : Object not know Entity.

    Donc voila ou j'en suis apres 2 jrs de recherches et tests intensif, je dois louper quelque chose mais je ne vois pas quoi.

    Je suis donc ouvert aux hypotheses, reflexions,etc...

    Merci d'avance a qui saura repondre a ma question et a ceux qui sont arrive jusque la.
    Ah oui, joie du qwerty = pas d'accent. Desole

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Par défaut
    Salut,


    tu peux me dire ou tu as initialisé ton em (entityManager)???


    Merci d'avance

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Par défaut
    Je souhaitais passer une instance de mon entityManager a ma factory elle même appelé depuis la methode PostConstruct de mon Bean.

    Pour être bien sur que l'injection est déjà été effectuée.

    Mais j'ai finalement opté pour une autre solution qui travaille avec un Relache Bean Remote qui récupère des instances d'autre EJB ou classes diverses qui eux s'occupent des entityManager.
    En gros mon RelacheBean, peux aussi bien travailler avec des EJB qu'avec des classes implémentant les interface des EJB (et qui n'en sont pas).

    Ca n'a pas l'air tres clair, mais si quelqu'un est un jour intéressé par la solution je lui soumettrais plus précisément.

    Le seul truc important, c'est que RelacheBean n'utilise plus de @EJB ou @PersistenceContext (Ni d'appel jndi).

Discussions similaires

  1. Erreur "could not load entity"
    Par sousouksousouk dans le forum Spring
    Réponses: 2
    Dernier message: 30/04/2013, 11h19
  2. Object not found: SYSTEM_TABLE_CONSTRAINTS
    Par pcouas dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 15/07/2012, 09h41
  3. Jpa @Lob byte[] postGreSql - could not load Entity
    Par zanteskuken dans le forum JPA
    Réponses: 2
    Dernier message: 16/02/2012, 10h02
  4. Not know entity type
    Par franchouze dans le forum Hibernate
    Réponses: 11
    Dernier message: 28/09/2009, 14h54
  5. Pb "could not create entity" JBOSS 3.2.8 Postgres 8.1.5
    Par bipbip88 dans le forum Wildfly/JBoss
    Réponses: 7
    Dernier message: 30/01/2007, 09h57

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