Если вам нужна только одна строка
Если вам нужна только одна строка, вы должны добавить этот предикат в свой запрос, т.е.
var result = dsl.select(IDEA.GP_STATUS, count())
.from(IDEA)
.where(IDEA.GP_STATUS.eq("x"))
.groupBy(IDEA.GP_STATUS)
.fetchOne();
В этот момент вы не Предложение GROUP BY
больше не требуется:
var result = dsl.select(count())
.from(IDEA)
.where(IDEA.GP_STATUS.eq("x"))
.fetchOne();
Обратите внимание, что в обоих случаях я использовал ResultQuery.fetchOne()
, что дает Record
, из которого вы можете извлекать значение разными способами, например
// Repeat the column expression from the SELECT clause
int count1 = result.get(count());
// Access columns by index, and redundantly supply the type again
// Assuming the second query was executed
int count2 = result.get(0, int.class);
Есть еще много способов.
Если вам нужен весь результат
Если вам нужен весь набор результатов, но для конкретного случая c просто хотите извлечь одну строку, тогда вы можете повторить Result
, который расширяет List
, или использовать Result.intoGroups(IDEA.GP_STATUS).get("x")
или любой другой метод для Result
, чтобы сделай что-нибудь подобное.