Выбрать все элементы из списка в спящем режиме - PullRequest
12 голосов
/ 15 июня 2011

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

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

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

Ответы [ 2 ]

22 голосов
/ 15 июня 2011

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

Query query = query("select product from Product product where product.id IN :list")
    .setParameterList("list", list);
0 голосов
/ 15 июня 2011

Не уверен, что я вас понял, но проверьте эту ссылку: 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)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...