package com.mysema.query.collections;

import static com.mysema.query.group.GroupBy.groupBy;
import static com.mysema.query.group.GroupBy.map;
import static org.junit.Assert.assertEquals;

import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.mysema.query.annotations.QueryEntity;


public class GroupBy4Test {

    @QueryEntity
    public static class Table {
        String col1, col2, col3;

        public Table(String c1, String c2, String c3) {
            col1 = c1;
            col2 = c2;
            col3 = c3;
        }
    }

    @Test
    public void test() {
        List<Table> data = Lists.newArrayList();
        data.add(new Table("1", "abc", "111"));
        data.add(new Table("1", "pqr", "222"));
        data.add(new Table("2", "abc", "333"));
        data.add(new Table("2", "pqr", "444"));
        data.add(new Table("3", "abc", "555"));
        data.add(new Table("3", "pqr", "666"));

        QGroupBy4Test_Table table = QGroupBy4Test_Table.table;
        Map<String, Map<String, String>> grouped = CollQueryFactory
                .from(table, data)
                .transform(groupBy(table.col1).as(map(table.col2, table.col3)));

        assertEquals(3, grouped.size());
        assertEquals(2, grouped.get("1").size());
        assertEquals(ImmutableSet.of("abc", "pqr"),  grouped.get("1").keySet());

    }

}

Add test