Я хочу найти список сущностей, присутствующих в первом списке, и отклонить объекты, если они существуют во втором списке.
Примеры данных:
У меня есть продукты: P1, P2 и P3. Другой (основной) объект - это элементы: I1 и I2. Объект I1 содержит P1, а P2 и I2 содержит P2 и P3. Я хочу найти список элементов, если они присутствуют в List1 (содержит только P1) и отклоняет каждый элемент, если он присутствует в List2 (содержит только P3). Поэтому он должен дать мне I1 в качестве вывода.
Мой запрос и код:JPQL Query - объект, который находится в одном списке и не находится в другом
Query query = this.em.createQuery("SELECT distinct(i) FROM Item i join fetch i.products ip WHERE ip.product IN :list1 AND ip.product NOT IN :list2");
query.setParameter("list1", list1);
query.setParameter("list2", list2);
Этот запрос дает мне список обеих позиций. Что здесь не так?
Вы задаете значение параметра 'list1' дважды в коде, это опечатка или реальный код? –
Это опечатка, немедленно исправить ошибку –
«Я» действительно имя столбца, которое вы хотите отобразить из таблицы элементов? Это похоже на псевдоним таблицы. возможно, вы имеете в виду 'different *' или 'different i.id?' Я думаю, что это, скорее всего, вызовет синтаксическую ошибку. Вы заблуждаетесь? если да, то какая ошибка вы получаете или это просто возвращает пустой набор? Наконец, я не уверен, но похоже, что «внешнее соединение» будет работать лучше здесь или даже утверждение 'exist'. – xQbert