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 :

No metadata was found for type problem


Sujet :

JPA Java

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut No metadata was found for type problem
    bonjour j'ai un message d'erreur compréhensible :

    No metadata was found for type "class fr.aphp.ati.eai.hermes.ng484.model.Idoc".
    The class does not appear in the list of persistent types: [
    fr.aphp.ati.eai.hermes.ng484.model.E1edk01,
    fr.aphp.ati.eai.hermes.ng484.model.Ze1edk01,
    fr.aphp.ati.eai.hermes.ng484.model.E1edk03,
    fr.aphp.ati.eai.hermes.ng484.model.Ze1edp01,
    fr.aphp.ati.eai.hermes.ng484.model.E1edp01,
    fr.aphp.ati.eai.hermes.ng484.model.E1edp20,
    fr.aphp.ati.eai.hermes.ng484.model.Idoc,
    fr.aphp.ati.eai.hermes.ng484.model.E1edp19
    ].

    j'ai fais des test avec junit et les données sont persistées
    mais si je met ça dans un conteneur osgi j'obtient cette erreur.

    dois-je définir des classes pour les metadata alors qu'avec junit la persistance fonctionne sans ?
    dans les deux cas j'utilise JPA mais dans le cas de junit j'utilise l'option
    -javaagent:"C:\...\openjpa\2.1.1\openjpa-2.1.1.jar"

    A+JYT

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il semble que cela vient bien de -jpaagent

    j'utilise maven pour compiler
    Code xml : 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
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    	<persistence-unit name="ageps" transaction-type="RESOURCE_LOCAL">
    		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    		<!-- osgi:services/javax.sql.DataSource/(name=ageps) -->
    		<non-jta-data-source>osgi:services/javax.sql.DataSource/(name=ageps)</non-jta-data-source>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.E1edk01</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.E1edk03</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.E1edp01</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.E1edp19</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.E1edp20</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.Ze1edk01</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.Ze1edp01</class>
    		<class>fr.aphp.ati.eai.hermes.ng484.model.Idoc</class>
    		<exclude-unlisted-classes>true</exclude-unlisted-classes>
    	</persistence-unit>
    </persistence>
    dans mon dossier model j'ai aussi une classe pour jaxb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    E1edk01.java
    E1edk03.java
    E1edp01.java
    E1edp19.java
    E1edp20.java
    Idoc.java
    ObjectFactory.java
    Ze1edk01.java
    Ze1edp01.java
    je ne l'ai pas listé dans persistance et j'ai exclus les classe non listé
    mais à la compilation j'ai un warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    93  ageps  WARN   [main] openjpa.Enhance - Type "class fr.aphp.ati.eai.hermes.ng484.model.ObjectFactory" 
    loaded by java.net.URLClassLoader@130500f has no metadata; enhancing as persistence aware. 
    If you intended for "class fr.aphp.ati.eai.hermes.ng484.model.ObjectFactory" to be persistence-capable, 
    then this means that OpenJPA could not find any metadata for "class fr.aphp.ati.eai.hermes.ng484.model.ObjectFactory". 
    This can happen if the directory containing your metadata is not in your CLASSPATH,
    or if your metadata files are not named properly. 
    See the documentation on metadata placement for more information.
    je ne vois pas en quoi il pourrait gêner la compilation du reste.
    ma conf maven pour compiler
    Code xml : 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
    <plugin>
      <groupId>org.apache.openjpa</groupId>
      <artifactId>openjpa-maven-plugin</artifactId>
      <version>2.2.0</version>
      <configuration>
        <!-- beginning of directories with compiled entity classes -->
        <includes>**/model/*.class</includes>
        <!-- end of directories with compiled entity classes -->
        <addDefaultConstructor>true</addDefaultConstructor>
        <enforcePropertyRestriction>true</enforcePropertyRestriction>
      </configuration>
      <executions>
        <execution>
          <id>enhancer</id>
          <phase>process-classes</phase>
          <goals>
            <goal>test-enhance</goal>
            <goal>enhance</goal>
          </goals>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>org.apache.openjpa</groupId>
          <artifactId>openjpa</artifactId>
          <version>${openjpa-version}</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j-version}</version>
        </dependency>
      </dependencies>
    </plugin>
    je n'ai pas de pb de compilation aucun message d'erreur
    mais à l'exécution
    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
    Could not open JPA EntityManager for transaction; nested exception is 
    <openjpa-2.1.1-r422266:1148538 nonfatal user error> org.apache.openjpa.persistence.ArgumentException:
    This configuration disallows runtime optimization, 
    but the following listed types were not enhanced at build time or at class load time with a javaagent: "
    fr.aphp.ati.eai.hermes.ng484.model.E1edk01
    fr.aphp.ati.eai.hermes.ng484.model.Ze1edk01
    fr.aphp.ati.eai.hermes.ng484.model.E1edk03
    fr.aphp.ati.eai.hermes.ng484.model.Ze1edp01
    fr.aphp.ati.eai.hermes.ng484.model.E1edp01
    fr.aphp.ati.eai.hermes.ng484.model.E1edp20
    fr.aphp.ati.eai.hermes.ng484.model.Idoc
    fr.aphp.ati.eai.hermes.ng484.model.E1edp19"., cause={
    This configuration disallows runtime optimization,
    but the following listed types were not enhanced at build time or at class load time with a javaagent: "
    fr.aphp.ati.eai.hermes.ng484.model.E1edk01
    fr.aphp.ati.eai.hermes.ng484.model.Ze1edk01
    fr.aphp.ati.eai.hermes.ng484.model.E1edk03
    fr.aphp.ati.eai.hermes.ng484.model.Ze1edp01
    fr.aphp.ati.eai.hermes.ng484.model.E1edp01
    fr.aphp.ati.eai.hermes.ng484.model.E1edp20
    fr.aphp.ati.eai.hermes.ng484.model.Idoc
    fr.aphp.ati.eai.hermes.ng484.model.E1edp19".}
    là je ne comprends pas
    A+JYT

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    j'ai un peu avancé j'ai modifié ma conf maven
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
          <plugin>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-maven-plugin</artifactId>
            <version>2.2.0</version>
            <configuration>
              <!-- beginning of directories with compiled entity classes -->
              <includes>**/model/*.class</includes>
              <!-- end of directories with compiled entity classes -->
              <excludes>**/model/ObjectFactory.class</excludes>
              <addDefaultConstructor>true</addDefaultConstructor>
              <enforcePropertyRestriction>false</enforcePropertyRestriction>
              <forceMojoExecution>true</forceMojoExecution>
              <classes>target/classes/</classes>
            </configuration>
    ...
    j'ai exclus ObjectFactory.class, j'ai spécifé le dossier des classes (c'est le même main je suis sur)
    A+JYT

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Après des recherches sur le net j'ai trouvé ceci
    Citation Envoyé par http://stackoverflow.com/questions/7294906/openjpa-2-1-1-enhancement-problem-on-glassfish-3-1-1
    After some comments I've added the following lines to my persistence.xml:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <property name="openjpa.DynamicEnhancementAgent" value="false"/>
    <property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
    It works now, but OpenJPA throw this warning:...
    et j'ai moi aussi un warning qui est apparu à l'exécution
    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
    10234  ageps  WARN   [Camel (ng484-ageps-out) thread #109 - JmsConsumer[hermesjyt-ng484-ageps-out]]
    openjpa.Enhance - Creating subclass for "[
    class fr.aphp.ati.eai.hermes.ng484.model.E1edk01,
    class fr.aphp.ati.eai.hermes.ng484.model.Ze1edk01,
    class fr.aphp.ati.eai.hermes.ng484.model.E1edk03,
    class fr.aphp.ati.eai.hermes.ng484.model.Ze1edp01,
    class fr.aphp.ati.eai.hermes.ng484.model.E1edp01,
    class fr.aphp.ati.eai.hermes.ng484.model.E1edp20,
    class fr.aphp.ati.eai.hermes.ng484.model.Idoc,
    class fr.aphp.ati.eai.hermes.ng484.model.E1edp19
    ]".
    This means that your application will be less efficient and will consume more memory than it would
    if you ran the OpenJPA enhancer.
    Additionally, lazy loading will not be available for one-to-one and many-to-one persistent attributes in types
    using field access; they will be loaded eagerly instead.
    mais cela n'empêche pas d'avoir aussi une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Could not open JPA EntityManager for transaction;
    nested exception is <openjpa-2.1.1-r422266:1148538 fatal user error>
    org.apache.openjpa.persistence.ArgumentException:
    No registered metadata for type "class fr.aphp.ati.eai.hermes.ng484.model.E1edk01".
    This can happen if this class has not been annotated as a persistent entity or specified in the persistence unit (ex: in the orm.xml). ,
    cause={
    No registered metadata for type "class fr.aphp.ati.eai.hermes.ng484.model.E1edk01".
    This can happen if this class has not been annotated as a persistent entity or specified in the persistence unit (ex: in the orm.xml).
    }',
    la classe E1edk01 est bien listée dans persistance.xml
    A+JYT

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour,

    j'ai fini par trouver d'où venais mon problème.
    J'ai tous remis à plat et j'ai retiré tout ce que j'avais pu ajouter lors de mes tests.

    le problème ne venait pas directement de JPA ni de mon code mais de la façon dont Camel-Jpa est implémenté via Blueprint (osgi)

    pour que cela fonctionne il faut déclarer un bean dans blueprint dont la classe est org.apache.camel.component.jpa.JpaComponent

    si on ne le fait pas il crée l'objet correspondant à la volé lors du démarrage du contexte camel et visible il n'a alors plus accès aux entités JPA.

    en le déclarant dans blueprint
    le composant est déclaré dans le contexte et peu accéder au entiés jpa.

    A+JYT

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

Discussions similaires

  1. [Framework] Erreur "No qualifying bean of type found for dependency"
    Par shark59 dans le forum Spring
    Réponses: 5
    Dernier message: 04/06/2018, 00h55
  2. Réponses: 6
    Dernier message: 29/04/2015, 15h30
  3. Réponses: 6
    Dernier message: 05/01/2010, 21h42
  4. erreur No Converter for type java.util.Date found
    Par gefrey54 dans le forum JSF
    Réponses: 2
    Dernier message: 07/07/2008, 17h09
  5. [DEBUG] Found No Interfaces. Generating Code for Types
    Par Battosaiii dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 18/08/2006, 15h26

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