Bonjour, bonjour,
Bon alors voila, j'ai une action qui appelle cette fonction :
livraisonDelegate.createComposant(composantDto);
Cette fonction permet via les EJB de créer une entité Composant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void createComposant(ComposantDto composantDto) throws EJBException {
if (composantDto != null) {
try {
Composant composant = composantHome.create();
setComposantFromComposantDto(composant, composantDto);
}
catch (Exception e) {
throw new EJBException(e.getMessage());
}
}
else{System.out.println("create qui foire");// Message d'erreur
}
} |
Dans cette fonction, est appellée une autre fonction (en gras) qui sert à remplir les attributs de l'entité :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| private void setComposantFromComposantDto(Composant composant,
ComposantDto composantDto) {
composant.setAnalyseSql(composantDto.getAnalyseSql());
composant.setBasesConcernees(composantDto.getBasesConcernees());
TypeComposant typeComposant = null;
try {
typeComposant = typeComposantHome.findByPrimaryKey(composantDto.
getCodeType());
composant.setTypeComposant(typeComposant);
// composant.setCodeType(composantDto.getCodeType());
BatchComposant batchComposant = batchComposantHome.findByPrimaryKey(
composantDto.getCodeBatch());
composant.setBatchComposant(batchComposant);
// composant.setCodeBatch(composantDto.getCodeBatch());
Livraison livraison = null;
composant.setLivraison(livraison);
// composant.setCodeLivraison(composantDto.getCodeLivraison());
ReportComposant reportComposant = reportComposantHome.findByPrimaryKey(
composantDto.getCodeReport());
composant.setReportComposant(reportComposant);
// composant.setCodeReport(composantDto.getCodeReport());
composant.setComposantsImpactes(composantDto.getComposantsImpactes());
composant.setConsignesIntegration(composantDto.getConsignesIntegration());
composant.setContraintes(composantDto.getContraintes());
composant.setDateExecution(composantDto.getDateExecution());
composant.setContraintes(composantDto.getContraintes());
composant.setDatePremierTraitement(composantDto.getDatePremierTraitement());
composant.setDefinitionObjectif(composantDto.getDefinitionObjectif());
composant.setDescriptionTraitement(composantDto.getDescriptionTraitement());
composant.setHashCode(composantDto.getHashCode());
composant.setIdentification(composantDto.getIdentification());
composant.setImpactInfocentre(composantDto.getImpactInfocentre());
composant.setImpactsApplicatifs(composantDto.getImpactsApplicatifs());
composant.setImpactsSysteme(composantDto.getImpactsSysteme());
composant.setLienRessources(composantDto.getLienRessources());
composant.setLienSpecTech(composantDto.getLienSpecTech());
composant.setNatureTraitement(composantDto.getNatureTraitement());
composant.setNomFichiersIni(composantDto.getNomFichiersIni());
composant.setNomLibrairie(composantDto.getNomLibrairie());
composant.setNomScript(composantDto.getNomScript());
composant.setNumero(composantDto.getNumero());
composant.setPeriodicite(composantDto.getPeriodicite());
composant.setProcedureIncident(composantDto.getProcedureIncident());
composant.setTempsPrevu(composantDto.getTempsPrevu());
composant.setTempsReelConstate(composantDto.getTempsReelConstate());
composant.setVersionNsa(composantDto.getVersionNsa());
composant.setVersionwls(composantDto.getVersionwls());
composant.setVolumeTraite(composantDto.getVolumeTraite());
System.out.println(composant);
}
catch (FinderException ex) {
} |
Cependant, cette fonction me déclenche l'exception suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| java.rmi.RemoteException: EJB Exception: ; nested exception is:
javax.ejb.EJBException: EJB Exception: ; nested exception is: javax.ejb.EJBException: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:186)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:284)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
at gest_livr_appli.EJB.Session.LivraisonSessionFacade_gjcvny_EOImpl_810_WLStub.createComposant(Unknown Source)
at gest_livr_appli.EJB.Delegate.LivraisonDelegate.createComposant(LivraisonDelegate.java:31)
at gest_livr_appli.Action.doMajListeComposantsAction.execute(doMajListeComposantsAction.java:47)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6291)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:97)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3575)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2573)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:178)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:151)
Caused by: javax.ejb.EJBException: EJB Exception: ; nested exception is: javax.ejb.EJBException: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.
at gest_livr_appli.EJB.Session.LivraisonSessionFacadeBean.createComposant(LivraisonSessionFacadeBean.java:342)
at gest_livr_appli.EJB.Session.LivraisonSessionFacade_gjcvny_EOImpl.createComposant(LivraisonSessionFacade_gjcvny_EOImpl.java:632)
at gest_livr_appli.EJB.Session.LivraisonSessionFacade_gjcvny_EOImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:166)
... 21 more |
J'ai su que cette exception était du au fait d'appeller une fonction set inutilement car la relation définie par la clé étrangère entre cette entité et les autres le fait automatiquement. Seulement, même après avoir rajouté les findByPrimaryKey pour corriger ce plantage, j'ai toujours la même exception ...
Savez-vous pourquoi ? Merci d'avance
Partager