我正在尝试获取一张 map ,它基本上是 Map 并且具有来自 JOOQ 的 booktype 和 count 信息。 我尝试了以下和不同的组合,但不断出现错误。任何帮助将不胜感激:
Map<String, Result<Record1<Integer>>> countMap = ctx.selectCount().from(BOOKTABLE)
.groupBy(BOOKTABLE.TYPE)
.fetchMAP(BOOKTABLE.TYPE);
最佳答案
在这种情况下你不能使用 selectCount()
,因为当你真的想要一个 SELECT 类型时,它会产生一个
查询。SELECT COUNT(*)
查询, 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);
关于java - JOOQ 从 selectCount 检索 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732569/