Pas de [EntityType] a été trouvée pour la touche de classe [...] dans le Méta-modèle
Entité:
@Entity
@Table(name="user_account")
public class UserAccount implements Serializable{
private static final long serialVersionUID = -2606506548742732094L;
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private Integer id;
persistence.xml
<persistence-unit name="Maze" transaction-type="RESOURCE_LOCAL">
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mazedb"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
</properties>
</persistence-unit>
L'erreur
WARNING: #{accountController.performLogin}: java.lang.IllegalArgumentException: No [EntityType] was found for the key class [com.maze.model.UserAccount] in the Metamodel - please verify that the [Entity] class was referenced in persistence.xml using a specific <class>com.maze.model.UserAccount</class> property or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element.
javax.faces.FacesException: #{accountController.performLogin}: java.lang.IllegalArgumentException: No [EntityType] was found for the key class [com.maze.model.UserAccount] in the Metamodel - please verify that the [Entity] class was referenced in persistence.xml using a specific <class>com.maze.model.UserAccount</class> property or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element.
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Comportement
Chaque fois que je redémarre le Conteneur Web tout fonctionne très bien pour un couple de minutes et que cette erreur est lancée. Ce qui me manque?
EDIT :
Maintenant, j'utilise une entité sur la portée de l'application ainsi que la même erreur se produit pour le Pays de l'Entité. À la fois l'Utilisateur et le Pays sont définies comme des classes dans l'persistance.xml. En outre, le exclude-unlisted-classes est définie sur false.
SEVERE: Critical error during deployment:
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39 )
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:256)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:255)
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:4750)
at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:550)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5366)
at com.sun.enterprise.web.WebModule.start(WebModule.java:498)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2000)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1651)
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:109)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:294)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:462)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:382)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:459)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:209)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalArgumentException: No [EntityType] was found for the key class [com.maze.model.Country] in the Metamodel - please verify that the [Entity] class was referenced in persistence.xml using a specific <class>com.maze.model.Country</class> property or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element.
at org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entityEmbeddableManagedTypeNotFound(MetamodelImpl.java:174)
at org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entity(MetamodelImpl.java:194)
at org.eclipse.persistence.internal.jpa.querydef.AbstractQueryImpl.from(AbstractQueryImpl.java:97)
at com.maze.service.CountryService.readList(CountryService.java:74)
at com.maze.util.MazeConstants.<clinit>(MazeConstants.java:26)
Le Pays de l'entité:
@Entity
@Table(name = "country")
public class Country implements Serializable{
private static final long serialVersionUID = 4086034429815316972L;
@Id
private Integer id;
private String name;
private String continent;
private Integer population;
private Float surface;
@OneToMany(mappedBy = "country")
private List<User> userList;
Maintenant que cette entité est utilisé sur la portée de l'application et de l'Entité génère cette erreur Glassfish ne parvient pas à démarrer complètement.
DEUXIÈME EDIT :
Basé sur le comportement actuel, il semble que le conteneur web démarre et fonctionne bien jusqu'à ce que le premier déploiement à chaud.
Je suis à l'aide d'Eclipse Indigo, Service Release 1, mais c'est exactement l'erreur que j'obtiens.
Je ne suis pas sûr. Avez-vous essayez de définir le type d'opération à JTA? C'est également le plus sensible de choix dans une application web Java EE (sinon, vous avez à écrire manuellement/copypaste beaucoup de laid code réutilisable pour commencer, commit et rollback transactions). Votre dernier stacktrace dit aussi que vous êtes en train de faire l'APC de travail à l'intérieur d'un
static
initialiseur de bloc. Cela devrait théoriquement fonctionner très bien, mais c'est une mauvaise idée dans une EE de l'environnement. Le faire dans un post () constructeur d'une application étendue de haricots à la place.Actuellement, je suis en utilisant des Ressources Locales, par conséquent, j'ai créé un SingleTon, Factory pour gérer mon (statique) de l'EntityManager et EntityManager Usine. Je vais essayer d'utiliser un JTA.
Ah bien.. Vous risquez de ne pas l'avoir fait correctement. Démarreurs qui utilisent des Singletons dans une EE webapplication est souvent une recette pour le désastre. N'oubliez pas de jeter ces endogène des usines à partir de votre application web après le passage à JTA. Vous n'en avez pas besoin. Juste un
@Stateless
EJB avec @PersistenceContext
fait le travail plus que suffisamment.OriginalL'auteur TGM | 2012-01-05
Vous devez vous connecter pour publier un commentaire.
Le problème est de votre hot le déploiement de votre application. L'ancienne unité de persistance est rester dans les parages dans le serveur parce que vous n'avez jamais fermé l'ancienne usine, donc après le déploiement à chaud de l'usine a encore les anciennes classes, de sorte que vous obtenez la classe en fonte d'erreur.
Vous devez effacer l'ancienne unité de persistance. La fermeture de l'EntityManagerFactory devrait le faire, comme dans un Servlet détruire de rappel.
Si vous utilisez une persistance gérée par l'unité, alors tout devrait rentrer dans l'nettoyés automatiquement. Le problème est dans la façon dont vous gérez votre unité de persistance.
Je pense qu'il y a aussi un bug pour ce connecté sur EclipseLink, vous pouvez voter pour ce bug.
OriginalL'auteur James
Une fois, j'ai rencontré un problème similaire. L'exception était parfois jetés, parfois pas. Après une douloureuse quantité de temps de débogage j'ai découvert qu'il a été causé par un deuxième persistence.xml fichier contenant une unité de persistance avec un nom identique) inclus dans un autre jar dans le classpath.
OriginalL'auteur jpo
Pouvez-vous ajouter des classes manuellement à l'persistence.xml? Idéalement, vous ne devriez pas avoir à le faire, mais il serait au moins vous donner un début.
<persistence-unit><class>com.maze.model.UserAccount</class>...
Vous pourriez essayer de se débarrasser de la série générée id. C'est peut-être à chercher une autre version de la classe?
Oui, mais comment expliquez-vous le fait que l'application fonctionne pendant un certain temps avant d'échouer.
Pas sûr, peut-être que le serveur n'est pas fini de charger quelque chose quand vous commencer à voir le contenu statique?
Eh bien, si le serialUID vous utilisez dans la classe est différente de l'UID de classe stockées dans la Base de données pourrait conduire à ce problème, non?
OriginalL'auteur kcdragon
J'ai eu un problème similaire où j'avais refonte du code, en changeant les noms de classe et des ressources, et l'injection était encore en train d'essayer d'injecter de l'ancien nom de la classe. Renommage de mon unité de persistance résolu le problème (et par la suite de revenir le nom réintroduit le problème).
Mise à jour: après recherche, je suis tombé sur un fichier jar pour mes classes de Persistance. Je l'avais créé pour travailler autour d'une version précédente de problème. Pour aggraver le problème, j'ai eu aussi renommé mes projets. Si j'avais supprimé la persistance JAR à partir de mon espace de travail, il était toujours accroché autour de l'éclipse .xxx des dossiers sous l'ancien nom du projet. Je l'ai supprimé et toutes les références à l'ancien projet, et mon build était fixe, se débarrasser de la Non [EntityType] message.
OriginalL'auteur brs5tettba
Après quelques essais et erreurs, à la suite travaillé pour moi.
Assumer module1 contient des classes c1 et c2, module2 contient c3 et dépend de module1.
Notre application contient de la classe c5 et dépend de module2.
Assurez-vous que module1, module2 ne contiennent pas de persistence.xml
persistence.xml dossier de la demande doit contenir les données suivantes
Entrées ci-dessus sont tenus, même si vous avez ci-dessous l'entrée
Il a résolu tous les dessous de problèmes:
OriginalL'auteur Jagadesh