org.mise en veille prolongée.AnnotationException: @OneToOne ou @ManyToOne sur <entité> fait référence à une entité inconnue
Je reçois la suite Hibernate Exception:
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on cz.rohan.dusps.model.Switchport.konfiguracniTemplateAccess references an unknown entity: cz.rohan.dusps.model.KonfiguracniTemplate
org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:103)
org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
cz.rohan.dusps.helper.SessionFactoryHelper.initFactory(SessionFactoryHelper.java:122)
cz.rohan.dusps.helper.SessionFactoryHelper.getSessionFactory(SessionFactoryHelper.java:134)
cz.rohan.dusps.filter.HistorieZmenFilter.doFilter(HistorieZmenFilter.java:102)
cz.rohan.dusps.filter.CharsetFilter.doFilter(CharsetFilter.java:41)
après ~20 heures passé sur le problème des personnes différentes, ayant lu tous les possible de blog ou de forum, je suis vraiment désespérée ici.
C'est une taille moyenne de projet. Je dois mentionner que la base de données Postgres 9.1 et nous générons de la DB à l'aide d'un outil de modélisation. Hibernate se connecte à la base de données mais ne génère pas de.
J'ai créé une nouvelle entité dans la base de données, il est appelé "KonfiguracniTemplate" (modèle de configuration). J'ai créé le modèle, le contrôleur, la forme, les validateurs .jsp, tout au fond d'copié de 1:1 à partir d'une entité de même nature. Je peux maintenant travailler avec KonfiguracniTemplate, CRUD est entièrement fonctionnel.
Le problème vient quand je de référence de cette KonfiguracniTemplate de l'entité appelée Switchport. Dans la bd il y a un rapport entre les deux:
- Switchport 1:1 ... 0:N KonfiguracniTemplate (switchport toujours fait référence à une KonfiguracniTemplate; un KonfiguracniTemplate PEUT ÊTRE référencé zéro fois ou plus)
- Switchport a FK konfiguracniTemplateAccess_id cette relation.
.../Model/Switchport.java la relation est mappé comme toutes les autres relations de travail:
@ManyToOne
@JoinColumn(nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
J'ai essayé diverses formes:
@ManyToOne
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
ou
@ManyToOne(targetEntity=KonfiguracniTemplate.class)
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
J'ai aussi vérifié:
- les deux entités sont dans le même package
- ils sont à la fois annoté "@Entity" à l'aide "import javax.la persistance.De l'entité;"
- la construction, ne produit pas d'erreur/messages d'avertissement
- tant que la référence dans Switchport est commenté, tout va bien
Peu importe ce que j'essaie, je ne peut pas se débarrasser de la "fait référence à une entité inconnue" exception. Quelqu'un peut-il s'il vous plaît partager une idée de ce qui se passe ou peut-être la façon de déboguer le problème? La stacktrace au sommet de la poste est tout ce que j'obtiens dans les journaux.
Tous les commentaires sont grandement appréciés!
C'est une exception d'exécution. La compilation est réussie, d'après ce que je peux accéder au formulaire de connexion, de soumettre et d'-je obtenir de l'exception. Nous ne faisons pas de tests unitaires.
avez-vous vérifié votre bocal et assurez-vous que le fichier de classe pour le manque de classe est présente dans le pot après la construction?
Nous avons toujours s'engager à SVN de NetBeans et de l'utilisation d'Hudson pour construire le projet et le déploiement sur Tomcat. Le projet se termine en un seul .la guerre de fichier. BTW je peux utiliser le KonfiguracniTemplate entité très bien. Cependant je ne peux pas référence à partir de la Switchport entité.
Est
KonfiguracniTemplate
référencé dans votre hibernate.config.xml/ persistence.xml?OriginalL'auteur Martin | 2011-09-08
Vous devez vous connecter pour publier un commentaire.
Il suffit d'ajouter la classe Équipe à la "hibernate-cfg.xml" du fichier, parce que Hibernate ne pas s'identifier sans ajouter.
OriginalL'auteur Chintan Panchal
Solutions Possibles:
1) Veiller à ce que l'entité a été correctement référencé dans hibernate.cfg.xml
2) Veiller à ce que @Entité a été spécifié au niveau de la classe ( en haut de la classe )
OriginalL'auteur Shoaib Chikate
Finalement obtenu la solution à partir d'un autre développeur dans l'équipe!
Les classes doivent être importées avant la SessionFactory objet est créé. Ici, l'importation de la nouvelle classe a disparu, alors qu'il était inconnu de la SessionFactory objet.
De toute façon, merci à tous pour vos conseils!
OriginalL'auteur Martin
J'ai juste eu ce problème, avec l'entité
a
entité de référenceb
. Les deux entités étaient situés dans une commune POT à l'extérieur de projet web, j'ai travaillé sur l';a
a été déclarée en persistence.xml maisb
ne l'était pas. J'ai misb
dans un<class>
balise persistence.xml et cela a fonctionné!Vous êtes les bienvenus; content d'avoir pu aider!
OriginalL'auteur Nick
J'ai rencontré ce problème lors de l'utilisation de Printemps et de ne pas utiliser le
hibernate.cfg.xml
fichier. Il a été résolu par l'ajout du nom de package complet de laModel
classe à lasetPackagesToScan
méthode deLocalSessionFactoryBean
classe.OriginalL'auteur ashish bhutani
Il y a encore une chance de recevoir une telle exception à la règle, lorsque vous ne mentionnez pas votre mappage de classe dans hibernate.cfg.xml fichier.
Comme mentionné ci-dessus.
OriginalL'auteur Kundan Atre
J'avais même exception... j'ai juste oublier d'ajouter l'annotation (
@Entity
, et@Table
) sur MASTER class(classe de clé Primaire)donc la solution est le double de vérifier toutes les annotations dans vos entités , je veux dire, pas seulement
@ManyToOne
et@OneToMany
comme je l'ai fait.OriginalL'auteur Wojtek Radoń
si vos deux entité dans diffrent projet,vous pouvez numériser KonfiguracniTemplate du paquet dans d'autres projets.vous pouvez le faire comme ça au printemps de démarrage
@EntityScan({"com.thispackage.entity","com.KonfiguracniTemplatepackage.entity"})
OriginalL'auteur sonerila