Учитывая следующее, я пытаюсь принудительно загрузить дочернюю коллекцию (countryData) при выполнении запроса, однако это работает, однако я получаю дубликаты Bin
загруженных записей.
public Collection<Bin> getBinsByPromotion(String season, String promotion) {
final Session session = sessionFactory.getCurrentSession();
try {
session.beginTransaction();
return (List<Bin>) session.createCriteria(Bin.class).
setFetchMode("countryData", FetchMode.JOIN).
add(Restrictions.eq("key.seasonCode", season)).
add(Restrictions.eq("key.promotionCode", promotion)).
add(Restrictions.ne("status", "closed")).
list();
} finally {
session.getTransaction().commit();
}
}
Мне не нужно поведение по умолчанию (ленивое), так как запрос возвратит ~ 8 тыс. Записей, таким образом отправляя 16 тыс. Дополнительных запросов для получения дочерних записей.
Если бы я больше ничего не предпочел.
select ... from bins b where b.seasonCode = ?
and b.promotionCode = ?
and b.status <> 'Closed';
select ... from binCountry bc where bc.seasonCode = ?
and bc.promotionCode = ?;