У меня есть 2 стола, Partner
и Visit
. У партнера может быть много посещений, а также разных в тот же день. Мне нужно создать Criteria
ограничение какое количество голосов дней () Partner
посещения с указанной даты. Таким образом, два или более посещений в одну и ту же дату должны быть только одним.Критерии Ограничение по дате поля
Это можно сделать только Criteria
и Restrictions
??
я могу получить все визиты свидание с критериями, как:
Criteria criteria = buildCriteria();
criteria.add(Restrictions.eq(DBConstants.VISIT_COL_VISITOR, partnerVisitor));
criteria.add(Restrictions.ge(DBConstants.VISIT_COL_DATE, startDate));
Но теперь, чтобы отфильтровать повторяющиеся дни, мне нужно что-то вроде:
criteria.add(Restrictions.unique(DBConstants.VISIT_COL_DATE));
Любая идея?
EDIT: @ user23123412 @netik
Visit.java
private Integer id;
private Date date;
private Partner visitor;
// getters + setters
Visit
строк таблицы, связанные с партнером 1:
ID VISITOR DATE
1 1 10/10/2014 16:20
20 1 10/10/2014 18:00
45 1 12/10/2014 16:20
71 1 12/10/2014 19:40
89 1 16/10/2014 11:20
Ответ мне нужно после запроса является Visit
подсчет в другом дней с данного date
.
т.е .: Если я запустить запрос с visitor = 1
и startDate = 12/10/2014
результатом MUST быть 2, потому что ряд id = 45
и id = 71
разные визиты в той же день, так что это только один день.
Да, вы можете достичь этого, используя критерии, есть ли у вас одно отношение к вашей JPA? – user23123412
Да, 'OneToMany'relationship находится в' Partner', который может иметь много «посещений» ... но здесь это не важно, 'Date' не имеет отношения к' Partner' и может повторяться несколько раз с разным часом. . –
вы можете создать запрос к базе данных, который вы хотите достичь? – user23123412