Załóżmy, że mam obiekt z dwoma różnymi relacjami jeden-do-wielu. Podobnie jak:wiele relacji jeden-do-wielu ResultSetExtractor
Customer 1<->M Brands
i Customer 1<->M Orders
I powiedzmy, że mój obiekt Customer
ma dwie listy związanych z tymi dwoma obiektami.
Przeczytałem ten przykład: http://forum.springsource.org/showthread.php?50617-rowmapper-with-one-to-many-query , który wyjaśnia, jak to zrobić z pojedynczą relacją jeden do wielu. Dla wygody oto ResultSetExtractor
przesłanianie:
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());;
}
}
Nie sądzę, że obejmuje, jak pracować z obu. Jakie byłoby najczystsze podejście? Czy istnieje prostszy sposób niż iterowanie z warunkami? Czy zestawy byłyby lepsze niż listy w tym przypadku?
co struktura ma tabela mieć? – soulcheck
To dziwna struktura, jest to dziedziczny proyect. Nie ma wyraźnych relacji, które zmusiły mnie do przejścia na jdbc w przeciwieństwie do standardowego ORM. Ale są też relacje zdefiniowane przez użytkownika, a klient może mieć wiele zamówień, klient może mieć wiele marek. Tak więc na przykład, jeśli użyłbym hibernacji, miałbym obiekt 'Customer' z 2 listami jako właściwości i przypisałbym je jako jeden do wielu, ale ponieważ używam prostego zapytania i dołączam myślę, że zajmie to dwa różne zapytania do zapełnienia listy obiektów 'Klient', ponieważ w przeciwnym razie zwróciłby pomieszany zestaw wyników. – Nimchip
nono, po prostu powiedz, jakie tabele i kolumny masz w tym przypadku, a także czy istnieje mapowanie funkcjonalne od marek do zamówień i na odwrót, czy też są one całkowicie niezależne – soulcheck