Подтвердить что ты не робот

Выделить все элементы из списка в спящем режиме

У меня есть список идентификаторов продуктов, и я хочу получить все продукты из моего db с помощью запроса на спящий режим. Как я могу это сделать?

List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id =: list");

Я знаю, что это не лучший способ решить эту проблему, но я просто хочу знать, как я могу проверить все значения в списке.

4b9b3361

Ответ 1

Есть две вещи, которые вам нужно будет сделать... Первое заключается в том, чтобы изменить ваш HQL следующим образом (используя IN), а второй - связать список параметров:

Query query = query("select product from Product product where product.id IN :list")
    .setParameterList("list", list);

Ответ 2

Не уверен, что я получу вас, но ознакомьтесь с этой ссылкой: http://www.coderanch.com/t/217864/ORM/java/Hibernate-retrieve-data-database

В частности, этот фрагмент:

 public static void retrieve() {
  AnnotationConfiguration config = new AnnotationConfiguration();
  config.addAnnotatedClass(User.class);
  SessionFactory factory= config.configure().buildSessionFactory();
  Session session = factory.getCurrentSession();
  session.beginTransaction();
  Query queryResult = session.createQuery("from User");
  java.util.List allUsers;
  allUsers = queryResult.list();
  for (int i = 0; i < allUsers.size(); i++) {
   User user = (User) allUsers.get(i);
  }
 System.out.println("Database contents delivered..."); 
 }

На самом деле я просто перечитываю ваш вопрос, и я вижу, что вам нужен суб-выбор. Вы должны использовать запрос типа:

List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id IN (: list)");