Как я могу объединить две таблицы, используя спящий режим? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть таблицы OrderItem(order_id, product_id), Product(product_id, ...) и Order(order_id, ...).Как я могу использовать Критерии, чтобы получить все продукты в определенном порядке?

Criteria orderItemCriteria = session.createCriteria(OrderItem.class);
Criteria orderCriteria = orderItemCriteria.createAlias("order", "o");
orderCriteria = orderCriteria.add(Restrictions.eq("o.id", orderId));
List<Product> orderProducts = orderItemCriteria.setProjection(Projections.property("product")).list();

Это получает все product_ids.Как получить всю информацию о продукте?

Примечание * Я получаю lazyInitializtionException при попытке получить доступ к любому свойству продукта, кроме идентификатора, и мне не нужно менять выборку наEAGER.

1 Ответ

0 голосов
/ 29 марта 2019

В случае устаревших API criteria вы можете использовать метод .setFetchMode("product", FetchMode.EAGER): См. Документацию 4.2 .

В случае API критериев JPA вы должны использовать.fetch( OrderItem_.product ) метод: См. 5.4 документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...