1

結果セットからの Bean オブジェクトの設定に関する問題に直面しています。

B説明:結果セットには、 、BO、およびの 3 つのテーブルを結合したストアド プロシージャの結果が含まれていますBOV

テーブルに対応する 3 つの POJO があります。テーブル間の関係は次のとおりです: B0 個以上BOの 'sBOを持つことができますBOV。したがって、完全に結果セットには、の重複を含む 162 のレコードがありますB

例えば:

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

等々。

実際には 10 個の異なる がありますB。したがってB、162 レコードではなく、結果セットから 10 のみが必要です。また、II は、およびのすべての値に対して、対応するBOおよびBOVのようなものを取得できる必要があります。B=1BOBOV

これどうやってするの?これは純粋な 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 に答える