[英]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.