不幸的是,对于此特定查询,没有很多“更好”的方法来安全地键入
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);



