Bonsoir,

j'ai un petit souci avec hibernate.

J'ai troistables

SUIVI MESSAGE_IOP

MESSAGE_IOP

MESSAGE_IOP_ERREURS

SUIVI_MESSAGE_IOP a une clé étrangère sur MESSAGE_IOP

MESSAGE_IOP_ERREURS a une clé étrangère sur SUIVI_MESSAGE_IOP.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
  SuiviMessage suiviMessage = new SuiviMessage();
  suiviMessage.setMinId(messageIOP);
  suiviMessage.setSuiMesStatut(statut);
  suiviMessage.setSuiMesDate(new Date());
  SuiviMessageFactory.getInstanceMessageFactory().save(pTc,suiviMessage);
	//Parcours des erreurs
  Iterator itErreurs = erreurs.iterator();
  while (itErreurs.hasNext()) {
	ErrorOrWarning codeErreur = (ErrorOrWarning) itErreurs.next();
	String libelle = codeErreur.getLibelleRg();
	MessageIOPErreurs messageIopErreur = 
		new MessageIOPErreurs();
	messageIopErreur.setMesErCode(codeErreur.getCode());
	messageIopErreur.setMesErLibelle(libelle);
	messageIopErreur.setMesSuiMsg(suiviMessage);
 		MessageIOPErreursFactory.getInstanceMessageIOPErreursFactory()
				.save(pTc,messageIopErreur);
}
J'ai une exception qui me dit :

Caused by: java.sql.BatchUpdateException: ORA-02291: integrity constraint (NAE3ADM.MSG_IOP_ERR_SUIVI_MSG_IOP_FK1) violated - parent key not found
En gros j'essaie d'insérer dans messageIopErreur, l'objet suiviMessageIop, mais il me dit qu'il ne trouve pas sa clé.....

Or à la fin de l'éxécution de l'application, dans la table SuiviMessage j'ai bien mon enregistrement.... alors que bien entendu dans la table messageioperreurs, j'ai rien.....

Pour infos, il s'agit d'une application qui tourne depuis 2 ans en prod, le système hibernate tourne bien... j'ai inséré sans pb en utilisant le même principe dans d'autres tables.

Là je vois pas trop où est le souci....

En mode debug, à la fin de l'exécution du save de la factory de suiviMessage, il me génère bien un id technique.....
donc j'ai bien une clé primaire pour le suivi message...

mais pourquoi, message iop erreur ne la voit pas, là mystère :s !!!