Diyelim ki, iki farklı bire çok ilişkisi olan bir nesneyim var. Çok gibi:birden çok çoklu ilişki ResultSetExtractor
Customer 1<->M Brands
ve
Customer 1<->M Orders
Ve benim nesne Customer
bu iki nesne ile ilgili iki listeyi sahip olduğunu varsayalım.
Ben bu örneği okudum: http://forum.springsource.org/showthread.php?50617-rowmapper-with-one-to-many-query tek bire çok ilişkisi ile nasıl yapılacağını açıklar.
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());;
}
}
Ben ikisi ile çalışmak nasıl kapsar sanmıyorum: Kullanım rahatlığı için buraya ResultSetExtractor
kılma. En temiz yaklaşım ne olurdu? Koşullarla tekrarlamaktan daha basit bir yol var mı? Bu durumda listelerden daha iyi olur mu? Gerçekten bunu yapmak zorunda Eğer
tablo hangi yapı var? – soulcheck
Bu garip bir yapı, bu kalıtsal bir proyect. Standart bir ORM'nin aksine jdbc'ye taşınmam için beni zorlayan açık bir ilişki yoktur. Ancak kullanıcı tanımlı ilişkiler var, bir müşterinin birçok siparişi olabilir, bir müşterinin çok sayıda markası olabilir. Örneğin, örneğin hazırda bekletme özelliğini kullanırsam, "Müşteri" nesnelerini 2 liste olarak alırdım ve bunlara birden çok tane ekleyebilirdim, ancak düz bir sorgu kullanıyor ve katıldığımdan iki tane alacağımı düşünüyorum. "Müşteri" nesnesinin bir listesini doldurmak için farklı sorgular, aksi halde bir karmaşayı döndürür. – Nimchip
nono, sadece bu durumda hangi tabloları ve sütunları olduğunu ve ayrıca markalardan siparişlere ve tersi bir eşzamanlı haritalama varsa ya da tamamen bağımsız – soulcheck