Field unkown (erreur Mapping)

Bonjour,

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-04-02 19:06 (revision 40b5a93964a5371a2b394d345f457792bdbe9c91)
Encoding=UTF-8
EndpointIP=172.17.0.6
EndpointURL=http://f383b3c3818b:8080
TimeZone=Europe/Paris
SystemDate=2020-05-06 11:27:54

[Application]
ApplicationVersion=0.16 dev
ContextPath=
ContextURL=https://re7.rfs.re7.aws.renault.com
ActiveSessions=1
TotalUsers=13
EnabledUsers=11
LastLoginDate=

[Server]
ServerInfo=Apache Tomcat/9.0.33
ServerType=WEB
User=root

Modèle :

J’ai effectué un mapping mais un message d’erreur s’affiche et je n’arrive pas à comprendre la raison de cette erreur :

2020-05-06 11:19:10,286 ERROR [com.simplicite.objects.RenaultSites.SitesAccessPointIdentifierValue] SIMPLICITE|http://f383b3c3818b:8080||ECORED0001|system|com.simplicite.objects.RenaultSites.SitesAccessPointIdentifierValue|getInputIndex||Error SitesAccessPointIdentifierValue: Field for input name sitesApiAcpId.sitesAcpReaId unknown

voici le mapping :

		addObject("access-point-identifiers", "SitesAccessPointIdentifierValue");
		addField("access-point-identifiers", "rowId", "row_id");
		addField("access-point-identifiers", "accessPointIdentifier", "sitesApiAcpId.sitesAcpIdentifier");
		addRefField("access-point-identifiers", "access-points", "accessPointRowId", "sitesApiAcpId");
		addField("access-point-identifiers", "siteId", "sitesApiAcpId.sitesAcpReaId");
		addField("access-point-identifiers", "accessPointType", "sitesApiAcpId.sitesAcpType");
		addRefField("access-point-identifiers", "source-systems", "sourceSystemId", "sitesApiSysId");
		addField("access-point-identifiers", "sourceSystemName", "sitesApiSysId.sitesSysName");
		addRefField("access-point-identifiers", "identifier-types", "identifierId", "sitesApiIdtId");
		addField("access-point-identifiers", "identifierTypeName", "sitesApiIdtId.sitesIdtName");
		addField("access-point-identifiers", "identifierValue", "sitesApiValue");
		addField("access-point-identifiers", "effectiveDate", "sitesApiEffectiveDate");
		addField("access-point-identifiers", "endDate", "sitesApiEndDate");		

et voici un exemple du retour à l’appel du endPoint

    "access-point-identifiers": [
        {
            "accessPointType": "P07",
            "identifierId": "4",
            "endDate": "",
            "sourceSystemId": "2",
            "identifierValue": "00000000",
            "accessPointRowId": "2",
            "sourceSystemName": "RAFT",
            "accessPointIdentifier": "ACP03234259",
            "effectiveDate": "2020-04-04",
            "identifierTypeName": "RAFT_CODE",
            "rowId": "3"
        },

si j’ai bien compris, l’erreur concerne cette partie :
addRefField(“access-point-identifiers”, “access-points”, “accessPointRowId”, “sitesApiAcpId”);
addField(“access-point-identifiers”, “siteId”, “sitesApiAcpId.sitesAcpReaId”);
addField(“access-point-identifiers”, “accessPointType”, “sitesApiAcpId.sitesAcpType”);

Mais je ne comprends pas pourquoi le type (sitesApiAcpId.sitesAcpType) est accepté alors que le site Id (sitesApiAcpId.sitesAcpReaId) n’est pas reconnu

Merci de votre réponse

Ce composant de mapping n’a pas de subtilité ni intelligence, il mappe ce qui est paramétré ni plus ni moins.

Donc s’il dit qu’un attribut n’existe pas sur un objet c’est qu’il n’existe pas sur l’objet en question au niveau du paramétrage.

Autrement dit on ne peut pas récupérer un attribut ramené par jointure uniquement au niveau du mapping, il faut bien que l’attribut soit ramené au niveau du paramétrage de votre objet, à mon avis c’est ça votre pb.

Autre piste: l’ordre du mapping a de l’importance.

Je vous laisse vérifier ces deux points, si vous ne trouvez pas je vous regarderai plus dans le détail.

J’ai bien vérifié, les deux attributs ramenés par jointure au niveau du mapping sont aussi ramenés au niveau du paramètrage de l’objet :

le type s’affiche bien mais le reaId engendre une erreur.

En ce qui concerne l’ordre, c’est le dernier objet mappé (tout a déjà été mappé et la nomenclature est bien respecté

Je viens de redéployer mon environnement, j’ai refait un test et l’erreur a disparu.
Les modifications n’ont pas été prises en compte qu’après avoir redéployé (je ne sais pas si c’est juste une coïncidence) en tout cas, tout est bon maintenant

Les trucs qui disparaissent tout seul c’est toujours inquiétant… A voir si ça revient.