Hi everyone,
recentlty i add to rework on a project that used Cayenne 3.0.1 .
I did two modification:
- upgrade to cayenne 3.0.2 ( worked fine )
- i had to change (by dba request ) one of my relationship join,
adding another field in the relationship
from RICORSI_PENDENTI to VER_CDS ( field CODENTE)
When i access one side of the relation ship from RICORSI_PENDENTI to
VER_CDS i get this exception.
10:06:32,952 INFO QueryLogger - SELECT t0.AKEY, t0.CODENTE,
t0.NUMEROSOGGETTI, t0.DATARUOLO, t0.DATAACCERTAMENTO,
t0.ORAVERBALIZZAZIONE, t0.TARGA, t0.ID_VERBALIZZ1,
t0.DATANOTIFICAINGIUNZIONE, t0.ID_VERBALIZZ2, t0.LUOGO_VERB,
t0.NUMEROBOLLETTA, t0.TIPOTARGA, t0.RACCOMANDATAVERBALE, t0.SPESEAMMVE,
t0.TIPOSUPPLEMENTARE, t0.DATAVERBALE, t0.FLAG_VARI, t0.VERBALIZZANTE1,
t0.VERBALIZZANTE2, t0.ID_STRADA2, t0.VERBALIZZANTE3, t0.ID_STRADA1,
t0.USOMEZZO, t0.LOCATARIO, t0.SPESEALTRE, t0.TIPOMEZZO, t0.NUMEROCIVICO,
t0.PROTOCOLLOVERBALE, t0.DATARICORSO, t0.CODICESINISTRO,
t0.DATAVERBALIZZAZIONE, t0.TIPOV, t0.NUMEROREGISTRO, t0.TIPOVERBALE,
t0.TIPO_VIOLAZ, t0.STRADA1, t0.STRADA2, t0.DATASPEDIZIONEVERBALE,
t0.MODELLO, t0.AUSILIARIO, t0.IMPORTOSANZIONI, t0.NAZIONE,
t0.DATATRASMISSIONE, t0.TELAIO, t0.ORAACCERTAMENTO, t0.SPESEPOSTALI,
t0.DATATRASMISSIONERICORSO, t0.ID_LUOGO_VERB, t0.ANNOVERBALE,
t0.NOMEOPERATORE, t0.KILOMETRO, t0.DATANOTIFICAVERBALE, t0.MARCA,
t0.VALUTA, t0.AGENTE2, t0.AGENTE1, t0.STATOVERBALE, t0.ID_SINISTRO,
t0.SUBSTATO, t0.DATAARCHIVIAZIONE, t0.RIMOSSO FROM piemme.VER_CDS t0
WHERE (t0.AKEY = ?) AND (t0.CODENTE = ?) [bind: 1:200019405, 2:'H211']
10:06:32,968 INFO QueryLogger - === returned 1 row. - took 18 ms.
10:06:32,972 INFO QueryLogger - +++ transaction committed.
[Click] [error] handleException:
org.apache.cayenne.FaultFailureException: [v.3.0.2 apr 20 2012 16:13:44]
Error resolving fault for ObjectId: <ObjectId:VerCds, AKEY=200019405,
CODENTE=H211> and state (hollow). Possible cause - matching row is
missing from the database.
at
org.apache.cayenne.BaseContext.prepareForAccess(BaseContext.java:171)
at
org.apache.cayenne.CayenneDataObject.readProperty(CayenneDataObject.java:219)
at com.sapidata.piemme.domain.VerCds.getAnagrafiche(VerCds.java:50)
at
com.sapidata.piemme.domain.VerCds.getAnagrafeNotificata(VerCds.java:61)
at com.sapidata.ricorsi.web.user.InfoPage.onInit(InfoPage.java:71)
at net.sf.click.ClickServlet.processPage(ClickServlet.java:509)
at net.sf.click.ClickServlet.handleRequest(ClickServlet.java:331)
at net.sf.click.ClickServlet.doGet(ClickServlet.java:250)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
net.sf.click.extras.cayenne.DataContextFilter.doFilter(DataContextFilter.java:238)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:662)
It seems to me that the object VerCds( VER_CDS ) gets fetched from
Cayenne, but for some reason i get a Fault where accessing property
"anagrafiche" which in turn is a relationship.
if i get back to a single field relathionship from RICORSI_PENDENTI to
VER_CDS i don't get the fault and all the relationship of VER_CDS get
correctly fetched:
12:21:23,124 INFO QueryLogger - SELECT t0.AKEY, t0.CODENTE,
t0.NUMEROSOGGETTI, t0.DATARUOLO, t0.DATAACCERTAMENTO,
t0.ORAVERBALIZZAZIONE, t0.TARGA, t0.ID_VERBALIZZ1,
t0.DATANOTIFICAINGIUNZIONE, t0.ID_VERBALIZZ2, t0.LUOGO_VERB,
t0.NUMEROBOLLETTA, t0.TIPOTARGA, t0.RACCOMANDATAVERBALE, t0.SPESEAMMVE,
t0.TIPOSUPPLEMENTARE, t0.DATAVERBALE, t0.FLAG_VARI, t0.VERBALIZZANTE1,
t0.VERBALIZZANTE2, t0.ID_STRADA2, t0.VERBALIZZANTE3, t0.ID_STRADA1,
t0.USOMEZZO, t0.LOCATARIO, t0.SPESEALTRE, t0.TIPOMEZZO, t0.NUMEROCIVICO,
t0.PROTOCOLLOVERBALE, t0.DATARICORSO, t0.CODICESINISTRO,
t0.DATAVERBALIZZAZIONE, t0.TIPOV, t0.NUMEROREGISTRO, t0.TIPOVERBALE,
t0.TIPO_VIOLAZ, t0.STRADA1, t0.STRADA2, t0.DATASPEDIZIONEVERBALE,
t0.MODELLO, t0.AUSILIARIO, t0.IMPORTOSANZIONI, t0.NAZIONE,
t0.DATATRASMISSIONE, t0.TELAIO, t0.ORAACCERTAMENTO, t0.SPESEPOSTALI,
t0.DATATRASMISSIONERICORSO, t0.ID_LUOGO_VERB, t0.ANNOVERBALE,
t0.NOMEOPERATORE, t0.KILOMETRO, t0.DATANOTIFICAVERBALE, t0.MARCA,
t0.VALUTA, t0.AGENTE2, t0.AGENTE1, t0.STATOVERBALE, t0.ID_SINISTRO,
t0.SUBSTATO, t0.DATAARCHIVIAZIONE, t0.RIMOSSO FROM piemme.VER_CDS t0
WHERE t0.AKEY = ? [bind: 1:200019405]
12:21:23,130 INFO QueryLogger - === returned 1 row. - took 7 ms.
12:21:23,130 INFO QueryLogger - +++ transaction committed.
12:21:23,131 INFO QueryLogger - --- will run 1 query.
12:21:23,131 INFO QueryLogger - --- transaction started.
12:21:23,134 INFO QueryLogger - SELECT DISTINCT
t0.CODICENOTIFICAING, t0.CODICECONTRIBUENTE, t0.LUOGORESIDENZA,
t0.LUOGORILASCIODOCUMENTO, t0.CODFISCOMUNENASCITA,
t0.DATANOTIFICAINGIUNZIONE, t0.ANNONASCITA, t0.PROVRESIDENZA,
t0.DATAPASSAGGIOPROPRIETA, t0.DATAIDENTIFICAZIONE, t0.SESSO, t0.SPESEPT,
t0.CODICEFISCALE, t0.NUMERODOCUMENTO, t0.SOCIETA, t0.CODENTE,
t0.LUOGONASCITA, t0.INDIRIZZORESIDENZA, t0.PARTITAIVA,
t0.TIPOANAGRAFICA, t0.PARENTPROP, t0.PARENT, t0.DATANOTIFICARUOLO,
t0.DOCUMENTO, t0.DATANOTIFICAVERBALE, t0.COGNOME, t0.PROT_REINTEST,
t0.SPESEAM, t0.TIPODOCUMENTO, t0.QUINTOC, t0.ORIGINEDATI,
t0.DATAAGGDATI, t0.NUMEROREGISTRO, t0.DATADOCUMENTO, t0.ANNO,
t0.DATANASCITA, t0.CAPRESIDENZA, t0.NOME, t0.CODICENOTIFICA, t0.AKEY
FROM piemme.ANA_CDS t0 JOIN piemme.VER_CDS t1 ON (t0.PARENT = t1.AKEY
AND t0.CODENTE = t1.CODENTE) WHERE t1.AKEY = ? [bind: 1:200019405]
12:21:23,140 INFO QueryLogger - === returned 1 row. - took 9 ms.
12:21:23,140 INFO QueryLogger - +++ transaction committed.
12:21:23,141 INFO QueryLogger - --- will run 1 query.
12:21:23,141 INFO QueryLogger - --- transaction started.
12:21:23,144 INFO QueryLogger - SELECT DISTINCT t0.DATAREVOCA,
t0.ESISTERICORSO, t0.IMPORTOORIGINALE, t0.PROTOCOLLO,
t0.DATANOTIFICAINGIUNZIONE, t0.IMPORTOINGIUNZIONE, t0.NUMEROBOLLETTA,
t0.SPESENOTINGORIG, t0.DATASTAMPA, t0.SPESENOTIFICAINGIUNZIONE,
t0.NUM_RG_RICORSO, t0.PROTRICORSO, t0.NOTE, t0.ESITORICORSOING,
t0.CODENTE, t0.ANNOVERBALE, t0.ANNOINGIUNZIONE, t0.SPESEINGIUNZIONE,
t0.PARENT, t0.NUMEROINGIUNZIONE, t0.NUMEROREGISTRO, t0.SPEDIRE,
t0.DATARICORSOING, t0.DATAINGIUNZIONE, t0.DATAESITORICING,
t0.DATASOSPENS, t0.AKEY FROM piemme.CINGIUNZ t0 JOIN piemme.VER_CDS t1
ON (t0.PARENT = t1.AKEY AND t0.CODENTE = t1.CODENTE) WHERE t1.AKEY = ?
[bind: 1:200019405]
12:21:23,147 INFO QueryLogger - === returned 0 rows. - took 5 ms.
12:21:23,147 INFO QueryLogger - +++ transaction committed.
12:21:23,148 INFO QueryLogger - --- will run 1 query.
12:21:23,148 INFO QueryLogger - --- transaction started.
12:21:23,153 INFO QueryLogger - SELECT DISTINCT t0.GP_MANDDTBENE,
t0.CONTRODEDUFFICIO, t0.DTRIMB_SPESEACC, t0.GP_MANDDTRICH,
t0.RIFERIMENTI_RIMB, t0.GP_DTDISPOS, t0.GP_TIPOSOSP, t0.GP_NUMRG,
t0.NUMEROBOLLETTA, t0.DTRICOUT, t0.GP_DTSOSPFIN, t0.DATA_RIC_PREF,
t0.PROTRICOUT, t0.DESCNOPROCED, t0.GP_DISPFL1, t0.GP_ISSPESE,
t0.GP_PROTRICOUT, t0.DT_OPERATORE, t0.GP_DISPFL2, t0.GP_DTUDIENZEDONE,
t0.DATATRASMPREFETTO2, t0.CATEGORIARICORSO, t0.DATATRASMPREFETTO3,
t0.RIFRIMB_SPESEACC, t0.GP_DTTRASMATTI, t0.GP_GGVALPAGA,
t0.NOME_OPERATORE, t0.DATA_RICHIESTARIMB, t0.GP_DTUDIENZANEXT,
t0.DATARICORSO, t0.PARENT, t0.GP_DTSOSPIN, t0.MOTIVAZIONI, t0.CODENTE,
t0.GP_IMPSPES, t0.NUMEROREGISTRO, t0.OBBL_CDEDAGENT, t0.DATASTCONTROD,
t0.CODPAG, t0.DATA_BENESTARERRIMB, t0.DISPONIBILE, t0.GP_NOTE_MOTIVAZ,
t0.GP_DISPDT2, t0.GP_NOMEGP, t0.GP_DISPDT1, t0.GP_DTVALINI,
t0.GP_IMPSANZ, t0.GP_DTRICOUT, t0.AKEY, t0.RICEVUTA, t0.RICORSOTARDIVO,
t0.IMPRIMB_SPESEACC, t0.GP_IMPSANZRUO, t0.AUDIZIONE_TIPO, t0.NOTE,
t0.AUTORITAGIUDIZIARIA, t0.GP_DISPCHAR3, t0.PROT_RIC_PREF,
t0.GP_SPESEPROC, t0.GP_DISPCHAR1, t0.ANNOVERBALE, t0.CONTRODEDUZIONE,
t0.GP_DISPCHAR2, t0.PROTOCOLLORICORSO, t0.GP_PROTSPESE,
t0.GP_PROTDISPOS, t0.PROTOCOLLOPREFETTO, t0.PROCOTOLLOPREFETTO2,
t0.VALUTA, t0.GP_MANDNUM, t0.ESITORICORSO, t0.GP_IMPSPESRUO,
t0.PROTOCOLLOPREFETTO3, t0.ANNORICORSO, t0.DATAESITO,
t0.DATATRASMPREFETTO, t0.AUDIZIONE, t0.GP_DTSPESE FROM piemme.CRICORSI
t0 JOIN piemme.VER_CDS t1 ON (t0.PARENT = t1.AKEY AND t0.CODENTE =
t1.CODENTE) WHERE t1.AKEY = ? [bind: 1:200019405]
12:21:23,162 INFO QueryLogger - === returned 1 row. - took 14 ms.
12:21:23,162 INFO QueryLogger - +++ transaction committed.
12:21:23,167 INFO QueryLogger - --- will run 1 query.
12:21:23,167 INFO QueryLogger - --- transaction started.
12:21:23,173 INFO QueryLogger - {? = call
piemme.GIORNONONFESTIVONEGATIVO(?, ?)} [bind: 1:'[OUT]', 2:'2008-02-11
00:00:00.0', 3:-10]
12:21:23,196 INFO QueryLogger - === returned 1 row. - took 0 ms.
12:21:23,197 INFO QueryLogger - +++ transaction committed.
12:21:23,202 INFO QueryLogger - --- will run 1 query.
12:21:23,202 INFO QueryLogger - --- transaction started.
12:21:23,204 INFO QueryLogger - SELECT DISTINCT t0.CODENTE,
t0.PREF_RIFCONF, t0.ANNOVERBALE, t0.PROTOCOLLO, t0.AKEY,
t0.CODICECAUSALE, t0.PARENT, t0.PREF_RIFTRASM, t0.NUMEROBOLLETTA,
t0.PREF_DTTRASM, t0.NUMEROARCHIVIAZIONE, t0.DATASTAMPA,
t0.NUMEROREGISTRO, t0.PREF_DTCONF, t0.DATAST_LETTERA, t0.ANNOORDINANZA,
t0.DATAARCHIVIAZIONE, t0.CAUSALEARCHIVIAZIONE FROM PIEMME.CARCHIV t0
JOIN piemme.VER_CDS t1 ON (t0.PARENT = t1.AKEY AND t0.CODENTE =
t1.CODENTE) WHERE t1.AKEY = ? [bind: 1:200019405]
12:21:23,207 INFO QueryLogger - === returned 0 rows. - took 5 ms.
12:21:23,207 INFO QueryLogger - +++ transaction committed.
12:21:23,208 INFO QueryLogger - --- will run 1 query.
12:21:23,209 INFO QueryLogger - --- transaction started.
12:21:23,212 INFO QueryLogger - SELECT V.* FROM PIEMME.VER_CDS
V,PIEMME.T180PP T WHERE T.PARENT2_180_8 = 200019405 AND T.CODENTE = ?
AND T.PARENT = V.akey AND T.CODENTE = V.CODENTE [bind: 1:'H211']
12:21:23,222 INFO QueryLogger - === returned 0 rows. - took 10 ms.
12:21:23,223 INFO QueryLogger - +++ transaction committed.
12:21:23,223 INFO QueryLogger - --- will run 1 query.
12:21:23,224 INFO QueryLogger - --- transaction started.
12:21:23,225 INFO QueryLogger - SELECT V.* from PIEMME.VER_CDS V,
PIEMME.T180 T WHERE T.PARENT2_180_8 = 200019405 AND T.CODENTE = ? AND
T.PARENT = V.akey AND T.CODENTE = V.CODENTE [bind: 1:'H211']
12:21:23,229 INFO QueryLogger - === returned 0 rows. - took 4 ms.
12:21:23,230 INFO QueryLogger - +++ transaction committed.
I think i'm missing somthing in the modeler or my absution of simply
adding a filed to the RICORSI_PENDENTI --> VER_CDS relationship is wrong.
I hope i've expressed my problem with enough clarity .....
Can somebody please provide some hint to put me in the rigth direction ?
Of cource i can fetch Data Rows wrinting an SQLTemplate script for
resolving relatiohns on the DB and then manage relathioship
programatically, but i would like to use SelectQuery with prefetch instead.
Thanks, Marco