Salve ragazzi,
allora mi trovo un po' in difficoltà perchè in una web application che stò sviluppando devo usare un metodo di business che inserisce i dati in un database facendo uso di jdbc (i dati sono inseriti in un form all'utente e devono essere inseriti nel db)
Il fatto è che i metodi di business non li ho scritti io, l'altra persona è abbastanza irreperibile e sono piuttosto disperato...vi spiego come funziona il giro e qual'è il mio problema...vediamo se qualcuno riesce ad illuminarmi:
Ho 2 oggetti da inserire come record in 2 differenti tabelle del mio database, questi ogetti sono:
1) AnagBase anagBaseToUpdate che rappresenta un'anagrafica di base dell'utente (contiene dati come: nome, cognome, compagnia).
Tale oggetto è già presente come record in una tabella di un db MySql chiamata entities_anag_base
2) AnagPf anagPfToUpdate che rappresenta un'anagrafica persona fisica e contiene ulteriori dati anagrafici come data di nascita, luogo di nascita, sesso, etcetc.
Tale oggetto è rappresentato sul DB da una tabella chiamta entities_anag_pf ed ogni suo record deve essere legato con una foreign key ad un'oggetto esistente in entities_anag_base. Al momento tale tabella è VUOTA, non ci sono oggetti
Il mio problema è il seguente:
1) Per prima cosa in un metodo di una mia classe di front end mi vado a recuperare i 2 oggetti anagBaseToUpdate ed anagPfToUpdate dall'oggetto che rappresenta il valori inseriti nel mio form:
codice:
// Recupera dal form l'oggetto AnagBase da aggiornare:
AnagBase anagBaseToUpdate = changeDatiPersonaliForm.getAnagBase();
// Recupera dal form l'oggetto AnagPf da aggiornare:
AnagPf anagPfToUpdate = changeDatiPersonaliForm.getAnagPf();
E fin quì tutto ok...li recupera tranqullamente
Poi subito dopo vado ad aggiornare l'anagrafica di base nel database, facendo così:
codice:
// Aggiorna l'anagrafica di base nel database:
AnagBase updatedAnagBase = fidsAnagBaseManager.updateAnagBase(anagBaseToUpdate);
boolean executedUpdateAnagBase = updatedAnagBase != null;
Ed anche quì...viene aggiornata...
Subito dopo invece voglio INSERIRE un nuovo record nella tabella entities_anag_pf con i valori contenuti in anagPf (inseriti dall'utente nel form), quidi faccio così:
codice:
// Aggiorna l'anagrafica persone fisiche nel database:
AnagPf updatedAnagPf = fidsAnagBaseManager.insertAnagPf(anagBaseToUpdate, anagPfToUpdate);
boolean executedUpdateAnagPf = updatedAnagPf != null;
Ecco,
a questo punto si schianta e dà il seguente errore:
ERROR: com.sogeit.fids.webfids.actions.DatiPersonaliActio ns - com.mysema.query.QueryException: Caught MySQLIntegrityConstraintViolationException for insert into entities_anag_base(COMPANY_NAME, CREATED_BY, CREATION_DATE, ENTITY_AB_PK, FIRST_NAME, LAST_NAME, LAST_UPDATE, MODIFIED_BY, VOC_ENTITY_CATEGORY_PK, VOC_ENTITY_PK)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
DEBUG: org.springframework.webflow.execution.AnnotatedAct ion - Clearing action execution attributes map['method' -> 'manageDatiPersonali_Update']
DEBUG: org.springframework.webflow.execution.ActionExecut or - Finished executing com.sogeit.fids.webfids.actions.DatiPersonaliActio ns@4a7b483d; result = error
DEBUG: org.springframework.webflow.execution.AnnotatedAct ion - Clearing action execution attributes map[[empty]]
DEBUG: org.springframework.webflow.execution.ActionExecut or - Finished executing [EvaluateAction@7fb518fb expression = datiPersonaliActions.manageDatiPersonali_Update, resultExpression = [null]]; result = error
DEBUG: org.springframework.webflow.engine.ViewState - Rendering + [JSFView = '/WEB-INF/flows/shome/userprofile/account/manage-datipersonali.xhtml']
DEBUG: org.springframework.webflow.engine.ViewState - Flash scope = map['flowRenderResponse' -> true]
DEBUG: org.springframework.webflow.engine.ViewState - Messages = [DefaultMessageContext@94e13d4 sourceMessages = map[[null] -> list[[Message@64f7c811 source = [null], severity = ERROR, text = 'Errore in fase di aggiornamento: Caught MySQLIntegrityConstraintViolationException for insert into entities_anag_base(COMPANY_NAME, CREATED_BY, CREATION_DATE, ENTITY_AB_PK, FIRST_NAME, LAST_NAME, LAST_UPDATE, MODIFIED_BY, VOC_ENTITY_CATEGORY_PK, VOC_ENTITY_PK)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)']]]]
Guardando bene però cosa mette dentro l'oggetto anagPfToUpdate (che contiene l'anagrafica persone fisiche compilata dall'utente) ci stà questo:
anagPfToUpdate punta a: AnagPf [entityAnagPfPk=0, entityAbPk=0, birthDate=Tue Mar 10 00:00:00 CET 1981, birthPlace=Roma, birthPlaceCode=RM, birthCountryCode2=it, sex=m, vatNumber=4343, creationDate=null, lastUpdate=null, createdBy=0, modifiedBy=0] Luogo di nascita: Roma
E noto delle cose strane:
entityAnagPfPk è la foreign key che dovrebbe legarlo ad un record della tabella AnagBase (quindi in teoria dovrebbe essere la primary key dell'oggetto anagBaseToUpdate...ma NON è QUELLO !!!) ed alcuni campi sono settati a null...
E' possibile che dipenda da ciò il fatto che mi và in errore, si schianta e non me lo inserisce nel DB?
Please, help me...
Grazie mille
Andrea