假設我有一個具有兩種不同一對多關係的對象。就像:多個一對多關係ResultSetExtractor
Customer 1<->M Brands
和Customer 1<->M Orders
而且我們說,我的對象Customer
具有與這兩個對象的兩個列表。
我讀過這個例子: http://forum.springsource.org/showthread.php?50617-rowmapper-with-one-to-many-query 它解釋瞭如何用一個一對多的關係做到這一點。爲了您的方便,這裏的ResultSetExtractor
覆蓋:
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());;
}
}
我不認爲它涵蓋了如何使用這兩種工作。什麼是最乾淨的方法?有沒有比迭代條件更簡單的方法?在這種情況下,套餐會比名單更好嗎?
貴的表有什麼結構? – soulcheck
這是一個奇怪的結構,這是一個遺傳的proyect。沒有明確的關係,這迫使我轉向jdbc而不是標準的ORM。但是也有用戶定義的關係,即客戶可能有很多訂單,客戶可能有很多品牌。因此,例如,如果我使用休眠,我會有我的對象'客戶'與2列表作爲屬性,並將它們註釋爲一對多,但因爲我使用直接查詢和連接,我認爲這將需要兩個不同的查詢來填充對象'Customer'的列表,否則它將返回混亂的結果集。 – Nimchip
nono,只是告訴你在這種情況下有什麼表和列,以及是否有從品牌到訂單的功能映射,反之亦然,或者它們是完全獨立的嗎? – soulcheck