मान लें कि मेरे पास दो अलग-अलग संबंधों के साथ एक वस्तु है। बहुत पसंद:एकाधिक एक-से-कई रिश्तों के परिणाम ResetSetExtractor
Customer 1<->M Brands
और Customer 1<->M Orders
और कहते हैं कि मेरी वस्तु Customer
उन दो वस्तुओं से संबंधित दो सूचियों है करते हैं।
मैंने यह उदाहरण पढ़ा है: http://forum.springsource.org/showthread.php?50617-rowmapper-with-one-to-many-query जो बताता है कि इसे एक-से-कई रिश्ते के साथ कैसे किया जाए।
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());;
}
}
मुझे नहीं लगता कि यह कैसे दोनों के साथ काम करने के लिए शामिल किया गया है: आपकी सुविधा के लिये यहां ResultSetExtractor
ओवरराइड है। सबसे साफ दृष्टिकोण क्या होगा? क्या परिस्थितियों के साथ पुनरावृत्ति करने का एक आसान तरीका है? इस मामले में सूचियों की तुलना में सेट बेहतर होगा?
क्या संरचना अपनी मेज है? – soulcheck
यह एक अजीब संरचना है, यह विरासत में है। कोई स्पष्ट संबंध नहीं है जिसने मुझे मानक ओआरएम के विरोध में जेडीबीसी में जाने के लिए मजबूर किया। लेकिन उपयोगकर्ता द्वारा परिभाषित संबंध उर्फ हैं, ग्राहक के पास कई ऑर्डर हो सकते हैं, ग्राहक के पास कई ब्रांड हो सकते हैं। तो उदाहरण के लिए यदि मैंने हाइबरनेट का उपयोग किया है, तो मेरे पास ऑब्जेक्ट्स के रूप में 2 सूचियों के साथ मेरा ऑब्जेक्ट 'ग्राहक' होगा और उन्हें कई लोगों के रूप में एनोटेट किया जाएगा, लेकिन चूंकि मैं सीधे ऊपर की क्वेरी का उपयोग कर रहा हूं और इसमें शामिल हूं, मुझे लगता है कि इसमें दो लगेंगे ऑब्जेक्ट 'ग्राहक' की एक सूची को पॉप्युलेट करने के लिए अलग-अलग प्रश्न, क्योंकि अन्यथा यह एक झुका हुआ परिणामसेट वापस कर देगा। – Nimchip
गैर, बस बताएं कि इस मामले में आपके पास कौन सी टेबल और कॉलम हैं और यदि ब्रांड से आदेशों के लिए एक मजेदार मैपिंग भी है और इसके विपरीत वे पूरी तरह से स्वतंत्र हैं – soulcheck