select 来自带分组的表格

select from the tables with grouping

我想要 select 看起来像这样的对象列表

class CategoryProduct { 
    String id
    String name
    List<String> products
}

在我的映射器文件中我有这段代码

<resultMap type="CategoryProduct" id="categoryProductMap">
    <id property="id" column="cpm_category"/>
    <result property="name" column="c_name"/>
    <collection property="products" ofType="string" column="cpm_license_product"/>
</resultMap>

<select id="getProductsForAllCategories" resultMap="categoryProductMap">
    SELECT
        cpm.category_uid cpm_category,
        c.name c_name,
        cpm.pm_license_product_uid cpm_license_product
    FROM ${schema}.category_product_map cpm
        INNER JOIN ${schema}.category c
            ON c.category_uid = cpm.category_uid
    GROUP BY cpm_category, c_name, cpm_license_product
</select>

我这样调用 selection

getTemplate().selectList(getNamespace() +".getProductsForAllCategories");

我期待这个结果

id: CATEGORY_1,
name: 'first category',
products: [PRODUCT_1, PRODUCT_2]

但是我得到的结果是这样的

id: CATEGORY_1,
name: 'first category',
products: [CATEGORY_1, CATEGORY_1]

它没有返回产品,而是在 products 字段中重复了 ids。这是为什么?有什么问题?

GROUP BY也需要

我将 resultMap 更改为

<resultMap type="CategoryProduct" id="categoryProductMap">
    <id property="id" column="cpm_category"/>
    <result property="name" column="c_name"/>
    <collection property="products" ofType="string" javaType="java.util.ArrayList">
        <result column="cpm_license_product"/>
    </collection>
</resultMap>

它开始起作用了。