Ограничение оперативной выборки hibernate за пределами DAO

#java #hibernate #hql

#java #гибернация #hql

Вопрос:

У меня есть такие объекты, как ProductType, Product и ProductInventory.

У меня есть запрос объединения для извлечения списка запасов для определенного диапазона дат, который объединяет Product и ProductInventory. У меня есть список массивов объектов, которые я привел в действие, и подготовил его.

Теперь из DAO я возвращаю список продуктов.

На моем уровне выше, если я выполняю product.getProductInventory (), это фактически запускает запрос снова, получая весь инвентарь, а не тот инвентарь, который получен при объединении.

     final StringBuilder queryString = new StringBuilder(
                "from  Product As  rsProduct left outer join rsProduct.inventoryList "
                  "as inventory where rsProduct.efDate <= :travelEndDate AND rsProduct.expDate >= :travelStartDate AND rsProduct.locatiion = :LOCN AND rsProduct.id in (:productsIdList) and inventory.bookDate between :startDate and :endDate");
  

Пример. Допустим, дата начала путешествия — 20 января, а дата окончания путешествия — 21 января. Я получаю здесь только две записи, что идеально.

Но после того, как я вернусь к другому уровню, если я скажу product.getInventory(), он извлекает весь инвентарь независимо от дат.

Может ли кто-нибудь решить эту проблему?

Комментарии:

1. Пожалуйста, отформатируйте свой код. Приведенный выше код даже не будет скомпилирован.

2. Шон, теперь он отформатирован. Проверьте это

Ответ №1:

Вы должны определить фильтр и включить его перед доступом к коллекции.