Diciamo che ho un oggetto con due diverse relazioni uno-a-molti. Molto simile:più relazioni uno-a-molti ResultSetExtractor
Customer 1<->M Brands
e Customer 1<->M Orders
E diciamo che il mio oggetto Customer
ha due elenchi relativi a questi due oggetti.
Ho letto questo esempio: http://forum.springsource.org/showthread.php?50617-rowmapper-with-one-to-many-query che spiega come farlo con una singola relazione uno-a-molti. Per la vostra comodità ecco la ResultSetExtractor
di 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());;
}
}
Io non credo che si estende su come lavorare con entrambi. Quale sarebbe l'approccio più pulito? C'è un modo più semplice rispetto a iterare con le condizioni? Gli insiemi sarebbero meglio degli elenchi in questo caso?
quale struttura funziona il vostro tavolo ha? – soulcheck
è una struttura strana, questo è un progetto ereditato. Non ci sono relazioni esplicite che mi hanno costretto a passare a jdbc in opposizione a un ORM standard. Ma ci sono relazioni definite dall'utente, ovvero un cliente potrebbe avere molti ordini, un cliente potrebbe avere molte marche. Quindi, per esempio, se usassi l'ibernazione, avrei il mio oggetto 'Cliente' con 2 elenchi come proprietà e li annoterò come uno a molti, ma dal momento che sto usando una query diretta e join, penso che ci vorrebbero due query diverse per popolare un elenco di oggetti 'Cliente', perché altrimenti restituirebbe un set di risultati confuso. – Nimchip
nono, dì solo quali tabelle e colonne hai in questo caso e anche se c'è una mappatura funzionale da marche ad ordini e viceversa o sono totalmente indipendenti – soulcheck