我有一些代码看起来像这样:
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);
问题是,当 Java 编译器执行此操作时,大多数有关投影的类型信息已“丢失”。fetch()
方法已“达到”。没有办法ResultQuery.fetchXXX()
方法可以从SELECT
条款,并将其提供给您。
在 jOOQ 用户组上,一些用户主张将投影移至fetch()
方法完全采用 C# 的 LINQ 或 Scala 的 SLICK 的方式。这将使更高级的表达变得非常复杂SELECT
声明。一个这里记录了更详细的解释.
jOOQ 3.0 引入了额外的记录级类型安全性。在 jOOQ 3.3 中,因此可以获取单个值(已注册为#2246):
<T> T fetchValue(Select<Record1<T>> select);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)