2013-11-12 2 views
1

Я использую jooq, и мне нравится метод fetchMap (Field). Он отлично работает, если я хочу использовать одно поле в качестве ключа. Теперь я хотел бы получить карту, используя два поля в качестве ключа. Метод fetchMap (Поле []) возвращает карту с записью в качестве ключа. У меня есть значения полей в ключе, но я не уверен, как их преобразовать в объект Record, чтобы я мог захватить значение с карты.Как использовать карту, возвращаемую fetchMap jooq?

В принципе, я ищу способ создать экземпляр записи из набора значений полей.

Дополнительная информация: У меня есть таблица провинциальных отчетов за каждую неделю года. Ключ таблицы (провинция_ид, week_number). я могу это сделать ...

DSLContext create = DSL.using(connection, SQLDialect.ORACLE); 
Map<Record, ReportRecord> results = create.selectFrom(Tables.Report).fetchMap(new Field[]{Tables.Report.province_id, Tables.Report.week_number}); 

Но теперь, скажем, у меня есть province_id 2, и week_number из 42. Я хочу, чтобы создать запись из этого, так что я могу сделать

ReportRecord report = results.get(record); 

Прямо сейчас, я переключился на вызов

Result<ReportRecord> results = create.selectFrom(Tables.Report).fetch(); 

, итерацию над ним, и создание карты себе. Он работает, но мне очень хотелось бы знать, как использовать метод fetchMap. Не удалось найти что-либо в руководстве jooq или javadoc.

+0

Я не совсем уверен, в чем проблема. Не могли бы вы объяснить это более подробно с помощью примера кода? –

+1

Хорошо, я добавил несколько подробностей. – BradMicholson

ответ

1

Хм, на самом деле это не очень простой способ сделать это. Что вы можете сделать, так это:

Record record = create.newRecord(Report.province_id, Report.week_number); 
record.setValue(Report.province_id, 2); 
record.setValue(Report.week_number, 42); 
ReportRecord report = results.get(record); 

Согласен, это немного подробный и не очень удобный. Это должно быть улучшено в jOOQ 3.3 with #2847

+0

Конечно, немного подробный, но, по крайней мере, это выполнимо. Огромное спасибо. Оценил. – BradMicholson

Смежные вопросы