0

私はこのような結果セットを持っています...

+--------------+--------------+----------+--------+
| LocationCode | MaterialCode | ItemCode | Vendor |
+--------------+--------------+----------+--------+
|            1 |           11 |      111 |   1111 |
|            1 |           11 |      111 |   1112 |
|            1 |           11 |      112 |   1121 |
|            1 |           12 |      121 |   1211 |
+--------------+--------------+----------+--------+

LocationCode 2,3,4 などについても同様です。(最終的には json に変換される) オブジェクトが必要です: List<Location> Location クラスのネストされたオブジェクトの階層はどこにありますか..

Location.class
    LocationCode
    List<Material>

Material.class
    MaterialCode
    List<Item>

Item.class
    ItemCode
    Vendor

これは、1 つの場所に 2 つの材料があり、1 つの材料 (11) に 2 つのアイテムがあり、1 つのアイテム (111) に 2 つのベンダーがあるという結果セットに対応します。

どうすればこれを達成できますか? 私はAliasToBeanResultTransformer以前に使用したことがありますが、この場合に役立つとは思えません。

4

1 に答える 1

1

そのマッピングを行うためのきちんとした方法はないと思います。ネストされたループとカスタム ロジックを使用して、次の場所、マテリアル、アイテムなどの構築をいつ開始するかを決定するだけです。

この疑似コードのようなもの:

while (row = resultSet.next()) {
    if (row.locationCode != currentLocation.locationCode) {
        currentLocation = new Location(row.locationCode)
        list.add(currentLocation)
        currentMaterial = null
    } else if (currentMaterial == null ||
               row.materialCode != currentMaterial.materialCode) {
        currentMaterial = new Material(row.materialCode)
        currentLocation.add(currentMaterial)
    } else {
        currentMaterial.add(new Item(row.itemCode, row.vendorCode))
    }
}
于 2013-06-17T13:29:40.717 に答える