2016-04-20 4 views
0

Я пытаюсь получить карту, которая в основном представляет собой карту, и имеет информацию о букметопе и счету от JOOQ. Я пробовал следующие и разные комбинации, но продолжаю получать ошибки. любая помощь будет оценена:JOOQ Извлечение карты из selectCount

Map<String, Result<Record1<Integer>>> countMap = ctx.selectCount().from(BOOKTABLE) 
     .groupBy(BOOKTABLE.TYPE) 
     .fetchMAP(BOOKTABLE.TYPE); 

ответ

2

Вы не можете использовать selectCount() в этом случае, потому что будет производить SELECT COUNT(*) запрос, если вы действительно хотите SELECT type, COUNT(*) запрос.

Вот несколько способов, как сделать это, в зависимости от того, какой вы пытаетесь выйти из запроса:

// Assuming this static import: 
import static org.jooq.impl.DSL.*; 

Map<String, Integer> map1 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchMap(BOOKTABLE.TYPE, count()); 

Или:

Map<String, Record2<String, Integer>> map2 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchMap(BOOKTABLE.TYPE); 

Или:

Map<String, List<Integer>> map3 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchGroups(BOOKTABLE.TYPE, count()); 

or:

Map<String, Result<Record2<String, Integer>>> map4 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchGroups(BOOKTABLE.TYPE); 
+0

Большое спасибо sir – emraldinho

+0

@Lukas Eder Что делать, если столбец BOOKTABLE.TYPE имеет значения Null и Empty? Будет ли этот запрос группировать пустые и нулевые значения вместе как null? –

+0

@vinaypatlolla: В Oracle: Да, это то же самое. В других базах данных: Нет, 'NULL' и' '' 'не то же самое. –