2012-06-18 7 views
1

Je suis de retour avec le même problème ...Aucune métadonnée entité trouvée pour la classe

Je suis en train de requêtes utilise dans mon Cassandra DB avec Kundera (Cassandra ORM), ce travail interroge dans un projet d'autres mais lorsque je tente de le faire en webapp (en utilisant tomcat 6.0), je suis arrivé cette erreur:

com.impetus.kundera.metadata.KunderaMetadataManager - No Entity metadata found for the class 

=> JavaNullPointerException. Mais quand je laisse le persistence.xml de mon projet j'ai eu une autre erreur. (NoPersistence.xml trouvé ou quelque chose ...)

Ainsi, mon projet a trouvé Persistence.xml, mais pas ma classe Entity: fileCassandra.

Vous pouvez voir mon persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence 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_2_0.xsd" 
    version="2.0"> 
    <!-- 192.168.3.107 --> 
    <persistence-unit name="cassandra_pu"> 
     <provider>com.impetus.kundera.KunderaPersistence</provider>  
     <class>net.***.common.db.***.FileCassandra</class> 

     <properties>    
      <property name="kundera.nodes" value="localhost"/> 
      <property name="kundera.port" value="9160"/> 
      <property name="kundera.keyspace" value="KunderaExamples"/> 
      <property name="kundera.dialect" value="cassandra"/> 
      <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.pelops.PelopsClientFactory" /> 
      <property name="kundera.cache.provider.class" value="com.impetus.kundera.cache.ehcache.EhCacheProvider"/> 
      <!-- <property name="kundera.cache.config.resource" value="/ehcache-test.xml"/> -->   
     </properties> 
     </persistence-unit> 
</persistence> 

net. .common.db. .FileCassandra Je dois remplacer par * parce que c'est le nom de mon companie;)

Les mêmes méthodes (y compris EntityManager) travaille dans JUnit sur d'autres projets, lorsque je construis mon projet dans Tomcat, cette erreur apparaît ..

+0

Il semble que certaines propriétés ne soient pas mappées du tout - d'où le NPE lorsqu'il essaie de vous dire de quelle classe il s'agit. Avez-vous essayé d'en parler aux gens de Kundera? –

+0

mmh, c'est quoi les gens de Kundera, s'il vous plait? Je le tapais sur google mais pas de résultat concret. Mon persistence.xml est trouver par mon projet, mais je pense que le problème est la hiérarchie de mon . – superstarz

Répondre

0

Seul le problème que je peux voir est les classes et l'emplacement persistence.xml. Essayez de placer persistence.xml dans/WEB-INF/classes/META-INF /, à condition que vos définitions d'entité soient dans le dossier classes!

-Vivek

+0

WellBack Vivek Mon persistence.xml est déjà dans ce dossier avec cette ligne:.... net *** *** common.db FileCassandra Lorsque je supprime ce fichier, je suis une autre erreur, en Dans ce cas, mon projet trouve mon fichier de persistance. Le problème est la définition de la classe d'entité. Cette exception est throw lorsque j'essaie de conserver les données dans ma base de données. La déclaration de mon usine d'ententy Manager et de mon gestionnaire d'entité fonctionne bien. \t \t EntityManagerFactory emf = Persistence.createEntityManagerFactory ("cassandra_pu"); \t \t EntityManager em = emf.createEntityManager(); – superstarz

+0

Pourriez-vous s'il vous plaît partager l'erreur que vous obtenez. Est-ce différent de "No EntityMetadata found"? Pouvez-vous vous connecter avec moi sur mon ID Yahoo? –

+0

Je peux créer un compte pour Yahoo, mais j'ai une idée à propos de résoudre ce problème. Lorsque je décompiler KunderaMetadataManager j'ai trouvé l'exception est lancer Mais c'est étrange parce que mon message d'erreur est le suivant: com.impetus.kundera.metadata.KunderaMetadataManager - Aucune métadonnée d'entité trouvée pour la classe net.esi.common.db.ged. FileCassandra. Toute opération CRUD sur cette entité échouera. Si votre entité est pour RDBMS, assurez-vous que vous mettez le nom de classe d'entité complet sous dans persistence.xml pour l'unité de persistance RDBMS. Renvoyer la valeur nulle. Le mot "classe" est dit 2 fois ... – superstarz

1

Cela se produit lorsque vous avez plusieurs entrées de la même classe dans votre classpath.

L'endroit idéal pour avoir vos entités est le plus proche du même chargeur de classe qui charge le noyau et le client kundera (HBase, Cassandra etc.). Par exemple, si ces fichiers kundera se trouvent sous WEB-INF/lib, vous préférez que vos entités se trouvent sous l'application où, comme si les fichiers kundera se trouvent dans le dossier applications lib, mieux regrouper vos entités dans un pot et mettre eux là (et supprimer les entités dans votre application).

Questions connexes