1

我面临一个关于从结果集中填充 bean 对象的问题。

说明:Resultset 包含一个存储过程的结果,它是 3 个表BBO和的连接BOV

我有 3 个 POJO 对应于表。表之间的关系是:B可以有0个或多个BOBO可以有0个或多个BOV。所以完全在结果集中我有 162 条记录,其中包含重复的B.

例如:

B  BO   BOV
1  1     1
1  1     2
1  2     1
2  1     1 

等等。

实际上有10个不同B的。所以我只想要B结果集中的 10 条而不是 162 条记录。BO对于andBOVB=1所有值,II 也应该能够得到对应的BOand BOV

我怎样才能做到这一点?这是纯 Java 逻辑,无法更改存储过程的任何内容。只需要处理结果集。

4

2 回答 2

2

有一个结果集的运行图是一个可能的伪代码

[仅限伪代码...不保证编译]

Map mapofBs = new HashMap();
while(rs.hashNext()) {
    rs.next();
    String bId = rs.getString("columnname for id of b");
    B objectB = mapofBs.get(bId);
    if(objectB == null) {
        objectB = new B();
        //read relevant columns from result set and put into objectB
        mapOfBs.put(bId, objectB)
    }   
    //now onto the boId
    String boId = rs.getString("columnname for id of BO");
    BO objectBO = objectB.getBOForId(boId);
    if(objectBO == null) {
        objectBO = new BO();
        //read relevat columns from result set for objectBO
        objectB.addObjectBO(objectBO);
    }
    String bovID = s.getString("columnname for id of BOV");
    BOV objectBOV = objectBO.getBOVForId(bovId);
    if(objectBOV == null) {
        objectBOV = new BOV();
        //read relevat columns from result set for objectBOV
        objectBO.addObjectBOV(objectBOV);
    }
}
//mapOfBs.keySet() gives you a Set<B> which you are interested in
于 2010-03-06T09:26:12.973 回答
0

更改查询以包含 GROUP BY 是最好的选择。

于 2010-03-06T07:08:53.917 回答