Nous avons depuis quelques temps une erreur qui revient dans les logs.
Elle survient au moment d’un getCount().
long nb = linkedObj.getCount();
Cela n’a pas l’air d’avoir de conséquences concrêtes donc ce ticket n’est pas urgent, mais je n’arrive pas à voir d’où vient le problème.
ECORED0001|system|com.simplicite.util.engine.ObjectManager|makeFrom||Error Configuration error RciDomBceApp: unable to find the parent field of rciDomfctappAppId.rciAppIsBackup
Pour information, nous avons bien un Object Field rciDomfctappAppId mais il est sur un autre objet ( RciDomFctApp et pas RciDomBceApp).
J’ai essayé de supprimer et recréer la classe, redémarrer Tomcat sans succès.
Je sèche un peu !
Merci d’avance pour vos pistes éventuelles !
Emmanuelle
Cette log, remontée au makeFrom des “outer join”, indique qu’une jointure ne pourra pas se faire si le champ ramené est orphelin. Ce n’est donc pas sans conséquence (pas de jointure = produit cartésien)
ObjectField f = obj.getField("rciDomfctappAppId.rciAppIsBackup");
f.getParentField(); // null
obj.getRefField(f); // null
Bref il faut revoir la définition de l’objet.
Non, une foreign-key doit être par définition dans la table du champ ramené.
J’ai trouvé la source de l’erreur, elle vient de obf_ref_field_id et non obf_joined_id.obf_field_id.
C’est un champ d’ObjectField qui est en invisible donc je ne l’ai vu qu’en exportant l’XML de mon objet. En le mettant visible temporairement, je vois qu’il n’est pas bon.
J’avais copié cet Object Field à partir d’un autre objet pour gagner du temps, et je n’ai modifié que les valeurs visibles. Ce champ a gardé la valeur de son ObjectField source.
Je vais voir si j’ai d’autres cas du genre, je pense que oui car je pratique beaucoup la copie
EDIT : je n’arrive pas à corriger, car quand je clique sur la loupe, on ne me propose que des ObjectField de l’objet lié …
Le champ obf_ref_field_id est effectivement masqué car contraint par des règles compliquées de compatibilité ascendante avec le nouveau champ reflexif obj_joined_id sensé le remplacer à terme.
A date jusqu’en V6 :
obf_ref_field_id sert toujours au chargement des champs référencés en cache, et peut être spécifié dans les “vieux” modules XML
obj_joined_id sert à la UI pour filtrer le choix des champs de l’objet référencé et à afficher un arbre dans le panel des attributs, et pour importer les modules “récents”.
On va retirer le propriété copiable de obf_ref_field_id afin de forcer le recalcul au save en fonction de l’autre.
En attendant, supprime et recrée ces attributs d’objet.