Как создать свой собственный результат jOOQ?

У меня есть Result из jOOQ fetch(), который я превращаю в Collection и потом делаю с ним разные манипуляции.

Затем я хочу превратить его обратно в import org.jooq.Result. (Признаюсь, я хочу сделать это, потому что хочу иметь возможность использовать такие функции, как formatCSV и formatJSON, поэтому, если есть лучший способ добиться этого, я открыт для него!)

У меня возникли проблемы с выяснением того, как создать экземпляр нового result. Я пробовал несколько разных средств:

// ResultImpl cannot be resolved to a type
 ResultImpl<R> newResult1 = new ResultImpl<R>( ctx.configuration(), cursorFields );
 ResultImpl<Record2<Long, String>> newResult2 = new ResultImpl<Record2<Long, String>>( ctx.configuration(), cursorFields );
 Result<Record2<Long, String>> newResult3 = new ResultImpl<Record2<Long, String>>();


// Cannot instantiate the type Result<Record2<Long,String>>
Result<Record2<Long, String>> newResult4 = new Result<Record2<Long, String>>();


// The type org.jooq.impl.ResultsImpl is not visible
Configuration configuration;
// ... would make sure configuration was properly initialized
Result newResult5 = new org.jooq.impl.ResultsImpl.ResultsImpl( configuration );

Любая помощь будет оценена по достоинству!

Спасибо!

Редактирование


(16 ноября 2015 г./9:16aEST):

Вот как я это сделал:

        Result<Record> tempResult = null;
        tempResult = getResults().into( getResults().fields() );
        tempResult.clear();

        for (Buffer b : bufferPrimary)
            tempResult.add( b.dataRecord );

        return tempResult.formatCSV();

Мне не нравится, что tempResult получает все записи только для того, чтобы их очистить. Есть ли способ добавить .where( false ) к .into?


person danielc    schedule 16.11.2015    source источник
comment
Есть ли способ добавить .where(false) в .into? Нет, нет. Кажется, для такого метода where() не существует достаточно хорошего варианта использования....   -  person Lukas Eder    schedule 16.11.2015


Ответы (1)


Вы не можете создать экземпляр внутреннего класса ResultsImpl, потому что он частный пакет.

Если вы не хотите прибегать к отражению (не делайте этого), используйте

DSL.using(configuration).newResult(cursorFields);
person Lukas Eder    schedule 16.11.2015
comment
Я изменил исходный пост, чтобы показать, что у меня получилось... Мне это не очень нравится, но, похоже, это работает. Что мне не нравится, так это очищать результаты - это неэффективно. - person danielc; 16.11.2015
comment
@danielc: Интересный обходной путь :) Вы знаете, вы можете ответить на свои вопросы здесь, в Stack Overflow... - person Lukas Eder; 16.11.2015