JOOQ从selectCount中检索地图

时间:2016-04-20 02:06:10

标签: java sql jooq

我正在尝试获取一张基本上是Map的地图,并且具有来自JOOQ的booktype和count信息。 我尝试了以下和不同的组合,但不断收到错误。任何帮助将不胜感激:

    Map<String, Result<Record1<Integer>>> countMap = ctx.selectCount().from(BOOKTABLE)
         .groupBy(BOOKTABLE.TYPE)
         .fetchMAP(BOOKTABLE.TYPE);

1 个答案:

答案 0 :(得分:3)

在这种情况下,您无法使用selectCount(),因为当您真正需要SELECT COUNT(*)查询时,这会生成SELECT type, COUNT(*)个查询。

以下是有几种方法,具体取决于您尝试退出查询的类型:

// Assuming this static import:
import static org.jooq.impl.DSL.*;

Map<String, Integer> map1 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchMap(BOOKTABLE.TYPE, count());

或者:

Map<String, Record2<String, Integer>> map2 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchMap(BOOKTABLE.TYPE);

或者:

Map<String, List<Integer>> map3 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchGroups(BOOKTABLE.TYPE, count());

或者:

Map<String, Result<Record2<String, Integer>>> map4 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchGroups(BOOKTABLE.TYPE);