我正在尝试获取一张基本上是Map的地图,并且具有来自JOOQ的booktype和count信息。 我尝试了以下和不同的组合,但不断收到错误。任何帮助将不胜感激:
Map<String, Result<Record1<Integer>>> countMap = ctx.selectCount().from(BOOKTABLE)
.groupBy(BOOKTABLE.TYPE)
.fetchMAP(BOOKTABLE.TYPE);
答案 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);