В каких ситуациях Query.execute() возвращает null в DataNucleus

Я еще ничего не добавлял в свою базу данных, поэтому, по моим расчетам, следующий запрос должен вернуть результат 0.

    Query query = pm.newQuery(Password.class);
    query.setFilter("password == :passwordParam");
    query.setResult("count(password)");
    query.setResultClass(Integer.class);
    Integer result = (Integer)query.execute(password);
    System.out.println("Result: [" + result + "]");

Он возвращает null

Ни javadocs, ни документы результатов ничего не говорят о том, что этот метод может возвращать значение null. Думаю, я сделал что-то не так.

http://db.apache.org/jdo/api20/apidocs/javax/jdo/Query.html#execute%28%29 http://www.datanucleus.org/products/accessplatformnull2/jdo/jdoql_result.html


person David Parks    schedule 11.11.2010    source источник


Ответы (1)


Когда я попробовал ваш код с DataNucleus, у меня сначала возникла аналогичная проблема.

Усилитель байт-кода не был запущен. Как только я включил его, счет стал 0, как и ожидалось.

Возможно, у вас похожая проблема.

person Alex Jasmin    schedule 11.11.2010
comment
Примечание. Я удалил свой предыдущий ответ относительно агрегатов и стандарта JDO, так как в любом случае это не очень помогло. - person Alex Jasmin; 11.11.2010
comment
Другая информация тоже была полезна, вы должны оставить обе. :) Но в любом случае, удивительно, я думаю, что вы правы. Усилитель работал точно, я вижу, что он запускается каждый раз, когда я сохраняю файл, но я сделал чистый проект, и теперь я получаю ожидаемый результат для подсчета ... возможно, он как-то не улучшил этот файл, а чистая причина сделать все это снова. В любом случае, большое спасибо! - person David Parks; 11.11.2010