Dans une table j’effectue une recherche pour obtenir une liste de personnes correspondant à plusieurs critères :
public void rechercherSeul(Map<String,String> params) {
String dateN = params.get("dateNaissanceHabitant"); // YYYY-MM-DD HH:MM:SS
String dateS = params.get("dateDebutSejour"); // YYYY-MM-DD HH:MM:SS
this.resetFilters();
this.getField("DomsecoBoHabitantStatutHabitant").setFilter("Actif");
this.getField("DomsecoBoHabitantTypeResidence").setFilter("Secondaire");
this.getField("DomsecoBoHabitantEtatCivil").setFilter("='Celibataire' or ='Divorce' or ='Veuf' or ='SepareDeFait' or ='PartenariatDeces' or ='SepareLegal' or ='PartenariatDissous' or ='PartenariatDissousInconnu' or ='PartenariatSeparationDeFait'");
this.getField("DomsecoBoHabitantDateDebutSejour").setFilterDateMax(dateS);
this.getField("DomsecoBoHabitantDateNaissance").setFilterDateMin(dateN);
this.getField("DomsecoBoHabitantEtatDossier").setFilter("is null");
}
chaque personne est susceptible d’avoir des enregistrements liés, mais j’aimerai ajouter comme critère qu’il ne doit pas y avoir d’enregistrement lié
Oui pour chaque résultat de la recherche il faudra rechercher les enregistrements liés avec le row_id de la personne.
Mais je n’ai peut être pas bien compris votre besoin.
ça signifie que je ne peux pas le faire en une seule étape :
j’obtiens une liste de personnes
je dois parcourir chaque enregistrement pour savoir s’il y a des enreg liés
du coup n’est-ce pas mieux d’avoir un attribut dans ma table personne qui “compte” les enregistrements liés? je pense que ça me permettrait d’ajouter ce critère dans ma liste et de ne pas devoir parcourir chaque enregistrement trouvé… ce serait jouable?
Oui vous pouvez mais attention à la mise à jour de ces attributs.
Vous aurez à implémenter une mise à jour de ces attributs à chaque création, suppression des objets liés.
J’opterai pour une requête sql 'select count(*) … ’ pour chaque personne à l’étape 2.
getField("DomsecoBoHabitantEtatCivil").setFilter(" in ('Celibataire','Divorce','Veuf','SepareDeFait','PartenariatDeces' ,'SepareLegal','PartenariatDissous','PartenariatDissousInconnu','PartenariatSeparationDeFait')");
Comment avez-vous implémenter ce besoin ?
Personnellement je ne serais pas passer par l’API et aurait fait une seule requête qui renvoie la liste de row_id attendus.