Bonjour,
J’ai la méthode postLoad()
suivante dans laquelle je mets en place les droits :
Le problème, c’est que je rentre en boucle dans cette méthode telle que vous pouvez le voir dans les logs :
Comment corriger le problème ?
Bonjour,
J’ai la méthode postLoad()
suivante dans laquelle je mets en place les droits :
Le problème, c’est que je rentre en boucle dans cette méthode telle que vous pouvez le voir dans les logs :
Comment corriger le problème ?
Bonjour Corentin,
Il n’y a aucune raison que ton code tel présenté ici boucle sur le postLoad
. En revanche il faudrait voir comment est utilisé l’objet concerné et s’il n’es pas appelé en boucle ailleurs dans ton code.
PS : Les posts peuvent être écrit au format markdown pour éviter de poster des captures d’écran de code : Markdown Cheat Sheet | Markdown Guide
J’ai regardé, et effectivement, mon objet est appelé ailleurs dans le code, mais je ne sais pas comment faire autrement.
Voici le code :
ObjectDB powerInstance = getGrant().getTmpObject("DdvPower");
powerInstance.resetFilters();
java.util.List<String[]> powers = powerInstance.search();
for(String[] power : powers){
powerInstance.setValues(power);
if(Integer.valueOf(powerInstance.getFieldValue("ddvPowFundId.ddvFndTeam")) == idTeam){
responsibles.add(powerInstance.getFieldValue("ddvPowResponsible"));
}
}
Ma méthode postLoad()
est celle de l’objet DdvPower
et mon objectif est sélectionner tous les objets DdvPower
(du coups c’est pour ça que je boucle).
Auriez-vous une solution pour ne pas boucler et sélectionner tout les objets DdvPower
?
Pas sûr = que fait la méthode “isManager” ?
Si elle instancie l’objet ça partira en boucle.
De plus, rien à voir mais il convient de mettre les alias des tables (t pour la table principale) dans les searchspec “t.ddv_pow_xxx = …”
Car s’il y a des jointures réflexives dans votre modèle ou usages (treeview…), vous aurez des erreurs SQL de colonne ambiguë.
Du coup, j’ai utilisé directement une query pour évité de boucler sur l’objet de l’instance.
List<String[]> idsResponsibles = getGrant().query("SELECT p.ddv_pow_responsible FROM ddv_power p INNER JOIN ddv_fund f ON f.row_id = p.ddv_pow_fund_id INNER JOIN ddv_team e ON e.row_id = f.ddv_fnd_team WHERE e.row_id = " + idTeam);
for(String[] idResponsible : idsResponsibles){
responsibles.add(idResponsible[0]);
}
Par contre, existe il un moyen d’utilisé getGrant().getTmpObject("DdvPower")
sans boucler sur l’objet DdvPower pour tous les objets récupérés ?
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.