modèle Ma DB est la suivante:Filtre CayenneDataObject getXXXArray() entrées avec paramètres?
A.id (1 : n) B.ad_id
Ainsi, dans le poivre de Cayenne pour objet A a
je peux faire a.getBArray()
qui me retourne toutes les entrées de B de cette donnée Une entrée. Pourtant, je voudrais filtrer sur cette liste, basée sur la propriété active = 1
.
Évidemment, je peux utiliser Expression.fromString("active = 1")
avec SelectQuery
, mais pour cette approche, je ne peux pas trouver comment j'associe l'instance A sous laquelle je veux exécuter cette requête.
Une approche différente est de récupérer toutes les entrées de a.getBArray()
et de filtrer dans le code en recherchant uniquement celles qui ont active == true
, cette approche est IMHO inefficace.
Les recommandations sont les plus appréciées.
Merci, Maxim.
- EDIT:
Ma solution actuelle à est (les noms d'objets ont été remplacés par un & b respectivement):
long aId = DataObjectUtils.longPKForObject(db_a_instance);
String bSQL = "select * from b where active = 1 and a_id = " + aId;
SQLTemplate bQuery = new SQLTemplate(B.class, bSQL);
List<B> dbBs = context.performQuery(bQuery);
et je me demande s'il y a une meilleure, plus elegent Solution?
Merci.