ho un errore che mi si presenta in esecuzione con cadenza
apparentemente casuale:
Exception [EclipseLink-30005] (Eclipse Persistence Services -
2.2.0.v20110202-r8913):
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for
persistence archives with ClassLoader:
sun.misc.Launcher$AppClassLoader@63c78e57
Internal Exception: javax.persistence.PersistenceException: Exception
[EclipseLink-28018] (Eclipse Persistence Services -
2.2.0.v20110202-r8913):
org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [PyPaPiBasePU] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence
Services - 2.2.0.v20110202-r8913):
org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class org.pypapi.suite.base.entities.Utente]
uses a non-entity [class org.pypapi.suite.base.entities.Utenteufficio]
as target entity in the relationship attribute [field
utenteufficioCollection].
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:126)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:105)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at org.pypapi.db.Database.open(Database.java:44)
at org.pypapi.suite.base.Start.main(Start.java:32)
Il messaggio è chiaro, ma non riesco a capire in quali circostanze
Utenteufficio risulta una non-entity.
Possibile che l'interprete associ alle classi i caratteri di
pesistenza jpa in ordine pseudo casuale, e che
quindi possa verificarsi la situazione in cui Utente è entità quando
Utenteufficio non ancora?
Sono fuori strada?
t.
Exception Description: [class org.pypapi.suite.base.entities.Utente]
uses a non-entity [class org.pypapi.suite.base.entities.Utenteufficio]
as target entity in the relationship attribute [field
utenteufficioCollection].
Ok, ma il fatto che "a volte" dia errore mentre altre volte no, può
essere legato
al fatto che l'ordine in cui vengono registrate è pseudo casuale, e quindi può
capitare che prenda in considerazione Utente prima che sia registrato
Utenteufficio?
Questa, perlomeno, è l'unica spiegazione che mi riesce di darmi... ;-)
In persistence.xml ora sono specificate singolarmente.
Ok, ma il fatto che "a volte" dia errore mentre altre volte no, può
essere legato
al fatto che l'ordine in cui vengono registrate è pseudo casuale, e quindi può
capitare che prenda in considerazione Utente prima che sia registrato
Utenteufficio?
In persistence.xml ora sono specificate singolarmente.
> Se l'errore succede soltanto a volte, mi sembra più un bug che altro. Io lo
> cercherei su Internet se qualcun altro ha avuto lo stesso problema. Poi se
> c'è un aggiornamento del application server potrebbe anche risolvere la
> questione.
L'errore si presenta eseguendo da netbeans la prima volta.
Appena l'applicazione parte, posso continuare a chiudere e rieseguire in rapida
sequenza senza riottenere mai l'errore.
Se però faccio un modifica ad un file, allora alla prima esecuzione mi
si ripresenta.
Veramente curioso come comportamento.
Sembrerebbe accadere ad ogni modifica, se non lascio scorrere un lasso di tempo
sufficiente prima di eseguire.
Forse a questo punto un baco di Netbeans ide.
Nessun application server, è un applicazione desktop.
>> In persistence.xml ora sono specificate singolarmente.
>
> Hai provato tutte e due modi? Succede lo stesso?
A dire il vero non sono ancora riuscito a scovare come si fa. Ho idea che sia
così semplice che la documentazione che ho trovato si limita a dire che si può
fare, senza specificare come. :-P
ciao
t.
> Hai provato tutte e due modi? Succede lo stesso?
>> In persistence.xml ora sono specificate singolarmente.A dire il vero non sono ancora riuscito a scovare come si fa. Ho idea che sia
così semplice che la documentazione che ho trovato si limita a dire che si può
fare, senza specificare come. :-P
Ho provato a non includere alcun tag <class>, ma sembra non funzionare.
Appena ho un attimo farò tutto il test su un'altra macchina (magari linux)
così vedo se cambia qualcosa.
Grazie mille delle dritte.
ciao!
t.
Per questo ho scoperto l'arcano. Non dichiarare <class> nel persistence.xml
funziona solo in Java EE, poiché viene fatta una scansione dei sorgenti per
individuare le classi @Entity. In Java SE non funziona. :-)