Disons que j'ai un objet avec deux relations un-à-plusieurs différentes. Tout comme:plusieurs relations un-à-plusieurs ResultSetExtractor
Customer 1<->M Brands
et Customer 1<->M Orders
Et disons que l'objet mon Customer
a deux listes liées à ces deux objets.
J'ai lu cet exemple: http://forum.springsource.org/showthread.php?50617-rowmapper-with-one-to-many-query qui explique comment le faire avec une seule relation un-à-plusieurs. Pour votre commodité, voici la ResultSetExtractor
override:
private class MyObjectExtractor implements ResultSetExtractor{
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
Map<Integer, MyObject> map = new HashMap<Integer, MyObject>();
MyObject myObject = null;
while (rs.next()) {
Integer id = rs.getInt("ID);
myObject = map.get(id);
if(myObject == null){
String description = rs,getString("Description");
myObject = new MyObject(id, description);
map.put(id, myObject);
}
MyFoo foo = new MyFoo(rs.getString("Foo"), rs.getString("Bar"));
myObject.add(myFoo);
}
return new ArrayList<MyObject>(map.values());;
}
}
Je ne pense pas qu'il porte sur la façon de travailler avec les deux. Quelle serait l'approche la plus propre? Existe-t-il un moyen plus simple que d'itérer avec des conditions? Les ensembles seraient-ils mieux lotis que les listes dans ce cas?
quelle structure que votre table ont? – soulcheck
c'est une structure bizarre, c'est un projet hérité. Il n'y a pas de relations explicites qui m'ont forcé à passer à jdbc par opposition à un ORM standard. Mais il existe des relations définies par l'utilisateur, un client pourrait avoir de nombreuses commandes, un client pourrait avoir de nombreuses marques. Donc, par exemple, si j'utilisais hibernate, j'aurais mon objet 'Customer' avec 2 listes comme propriétés et je les annoterais de un à plusieurs, mais puisque j'utilise une requête directe et que je me joins, je pense qu'il faudrait deux différentes requêtes pour remplir une liste d'objet 'Customer', car sinon, cela retournerait un resultset brouillé. – Nimchip
nono, il suffit de dire quelles tables et colonnes vous avez dans ce cas et aussi s'il y a un mappage fonctionnel des marques aux commandes et vice versa ou sont-ils totalement indépendants – soulcheck