2015-07-07 4 views
2

У меня 2 записи в db. Где я буду делать это:QueryDsl: Выберите количество строк, которое соответствует критериям

QLoginRegistryEntry loginregistryentry = QLoginRegistryEntry.loginRegistryEntry; 
JPAQuery query = new JPAQuery(JPA.em()); 
List<LoginRegistryEntry> result; 
result = query.from(loginregistryentry) 
       .where(loginregistryentry.inDate.startsWith(yearAndMonth)) 
       .list(loginregistryentry); 

System.out.println(result.size()); 

Он вернется 2, который является правильным

Когда я делаю это:

QLoginRegistryEntry loginregistryentry2 = new QLoginRegistryEntry("a"); 
long count = query.from(loginregistryentry2).count(); 
System.out.println(count); 

Это вернет 4, что неправильно

Что я делаю неправильно? Как загрузить количество строк, отвечающее моим критериям?

+0

Вам не хватает предложение where() в вашем втором запросе? –

+0

Я думаю, что это не имеет значения. Без 'where' части statment он должен просто получить все строки. Проблема в том, что у меня есть ** две записи ** в этой конкретной таблице. Но 'count()' дважды возвращает это. Первый запрос, который возвращает правильный результат 2, вообще не выполняет 'count()'. Он забирает все записи, помещает их в список, а затем подсчитывает 'size()' этого списка. – masterdany88

ответ

0

Я не думаю, что вы выполнили запросы в изоляции. Вероятно, вы просто повторно использовали объект запроса из своего первого запроса и продолжали, вы получили перекрестное соединение и получили 2 * 2 = 4 результата.

+0

Как я помню, когда я повторно использую объект, я получаю сообщение об ошибке. – masterdany88

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