Выделить все элементы из списка в спящем режиме
У меня есть список идентификаторов продуктов, и я хочу получить все продукты из моего db с помощью запроса на спящий режим. Как я могу это сделать?
List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id =: list");
Я знаю, что это не лучший способ решить эту проблему, но я просто хочу знать, как я могу проверить все значения в списке.
Ответы
Ответ 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)");