2011-06-15 15 views
12

Tengo una lista de identificadores de productos y quiero obtener todos los productos de mi base de datos con una consulta de hibernación. ¿Cómo puedo hacer esto?Seleccionar todos los elementos de una lista en hibernación

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

Sé que esto no es la mejor manera de resolver esto, pero sólo quiero saber cómo puedo probar para todos los valores de una lista.

Respuesta

22

hay dos cosas que tendrá que hacer ... La primera es cambiar su HQL a la siguiente (haciendo uso de IN), y la segunda es la de vincular su lista de parámetros:

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

gracias, esto funcionó – fibera

0

No estoy seguro que conseguiré, pero echa un vistazo a este enlace: http://www.coderanch.com/t/217864/ORM/java/Hibernate-retrieve-data-database

Específicamente este fragmento:

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..."); 
} 

En realidad acabo de volver a leer su pregunta y ver desea una sub selecto. Usted debe considerar el uso de una consulta como:

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