繁体   English   中英

在jooq中检索selectCount的值

[英]Retrieving the value of selectCount in jooq

我有一些看起来像这样的代码:

Record record = jooq
    .selectCount()
    .from(USERS)
    .fetchOne();

目前我正在做以下事情以获得计数:

Integer count = (Integer) record.getValue(0);

但似乎必须有一个更好的解决方案(这是类型安全的......因为这是使用jooq的全部意义)。 有什么建议?

不幸的是,对于这个特定的查询,没有很多“更好”的方法来类型安全地获取count()值。 你能做什么,增加类型安全性,是这样的:

Field<Integer> f = count();
Integer count = jooq.
    .select(f) // Or selectCount(). Replaced it to illustrate the case
    .from(USERS)
    .fetchOne(f);

问题是,当“到达” fetch()方法时,关于投影的大多数类型信息已经“丢失”到Java编译器。 ResultQuery.fetchXXX()方法无法从SELECT子句中恢复它,并将其生成给您。

在jOOQ用户组中,一些用户主张将投影移动到fetch()方法,完全是C#的LINQ或Scala的SLICK的方式。 这会使更高级的SELECT语句的表达变得非常复杂。 这里记录了更详细的解释

使用jOOQ 3.0,引入了额外的记录级类型安全性。 在jOOQ 3.3中,因此可以获取单个值(已注册为#2246 ):

<T> T fetchValue(Select<Record1<T>> select);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM