簡體   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