首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将结果集映射到对象的嵌套结构?

如何将结果集映射到对象的嵌套结构?
EN

Stack Overflow用户
提问于 2013-06-17 21:22:52
回答 1查看 1.6K关注 0票数 0

我有一个像这样的结果集…

代码语言:javascript
复制
+--------------+--------------+----------+--------+
| LocationCode | MaterialCode | ItemCode | Vendor |
+--------------+--------------+----------+--------+
|            1 |           11 |      111 |   1111 |
|            1 |           11 |      111 |   1112 |
|            1 |           11 |      112 |   1121 |
|            1 |           12 |      121 |   1211 |
+--------------+--------------+----------+--------+

我需要一个对象(最终要转换为LocationCode )如下:List<Location>,其中Location类中嵌套对象的层次结构是..

代码语言:javascript
复制
Location.class
    LocationCode
    List<Material>

Material.class
    MaterialCode
    List<Item>

Item.class
    ItemCode
    Vendor

这与结果集相对应,其中1个地点有2个物料,1个物料(11)有2个物料,1个物料(111)有2个供应商。

我该如何实现这一点?我以前用过AliasToBeanResultTransformer,但我怀疑它在这种情况下会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-17 21:29:41

我不认为有一种巧妙的方法来做这种映射。我只是使用嵌套循环和自定义逻辑来决定何时开始构建下一个位置、材料、项目等等。

类似于下面的伪代码:

代码语言:javascript
复制
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))
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17148535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档