Sto ricevendo il seguente Hibernate Eccezione:org.hibernate.AnnotationException: @OneToOne o @ManyToOne su <entity> riferimenti un'entità sconosciuta
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)
dopo ~ 20 ore trascorse sul problema con le varie persone, dopo aver letto tutti i possibile blog o forum, sto davvero diventando disperato qui.
Questo è un progetto di medie dimensioni. Dovrei menzionare che il database è Postgres 9.1 e generiamo il DB utilizzando uno strumento di modellazione. Hibernate si connette al database ma non lo genera.
Ho creato una nuova entità nel database, si chiama "KonfiguracniTemplate" (modello di configurazione). Ho creato il modello, il controller, la forma, i validatori, i .jsp, tutti sostanzialmente copiati 1: 1 da un'entità esistente di natura simile. Ora posso lavorare con KonfiguracniTemplate, CRUD è completamente funzionante.
Il problema si presenta quando faccio riferimento a questo KonfiguracniTemplate dall'entità chiamata Switchport. Nel DB c'è una relazione tra i due:
- switchport 1: 1 ... 0: N KonfiguracniTemplate (switchport fa sempre riferimento a KonfiguracniTemplate, un KonfiguracniTemplate è possibile ricondurre a zero o più volte)
- switchport ha FK konfiguracniTemplateAccess_id per questa relazione.
In .../modello/Switchport.java la relazione viene mappata come tutte le altre relazioni che stanno lavorando:
@ManyToOne
@JoinColumn(nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
ho provato varie forme:
@ManyToOne
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
o
@ManyToOne(targetEntity=KonfiguracniTemplate.class)
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
Ho anche controllato:
- entrambe le entità sono nello stesso pacchetto
- entrambi sono annotati "@Entity" usando "importazione javax.persistence.Entity;"
- la build non produce messaggi di errore/avvertimento
- finché il riferimento switchport è commentata, è tutto a posto
Non importa quello che provo non può sbarazzarsi dei "riferimenti un'entità sconosciuta " eccezione. Qualcuno può, per favore, condividere un'idea di ciò che sta accadendo o magari di come risolvere il problema? Lo stacktrace nella parte superiore del post è tutto ciò che ottengo nei registri.
Tutti gli input sono molto apprezzati!
questo succede dopo una costruzione o in fase di sviluppo? I tuoi test unitari sono eseguiti? – hvgotcodes
Questa è un'eccezione di runtime. La compilazione ha esito positivo, dopo di che posso accedere al modulo di accesso, inviare e ottengo l'eccezione. Non facciamo test unitari. – Martin
hai controllato il tuo jar e assicurati che il file di classe per la classe mancante sia presente nel jar dopo la creazione? – hvgotcodes