Foros del Web » Programación para mayores de 30 ;) » Java »

Consulta hibernate a varias tablas

Estas en el tema de Consulta hibernate a varias tablas en el foro de Java en Foros del Web. Saludos a todos nuevamente. Tengo 3 tablas: materiaprima, unidad, y tipo. Tengo pensado consultar por nombre de materiaprima, por nombre de unidad, y por nombre ...
  #1 (permalink)  
Antiguo 23/05/2015, 14:45
 
Fecha de Ingreso: diciembre-2014
Ubicación: Lima
Mensajes: 68
Antigüedad: 9 años, 11 meses
Puntos: 0
Consulta hibernate a varias tablas

Saludos a todos nuevamente.
Tengo 3 tablas: materiaprima, unidad, y tipo.
Tengo pensado consultar por nombre de materiaprima, por nombre de unidad, y por nombre de tipo, usando criteria, lo que deseo haces es que el usuario solo escriba una, dos o mas letras presione un boton y les muestre las coicidencias.

Ya tengo la consulta que es la siguiente:

Código Java:
Ver original
  1. public List<Materiaprima> porUnidad(String unidad) {
  2.         List<Materiaprima> materiaprimas = null;
  3.         try {
  4.             session.getTransaction().begin();
  5.             Criteria crit = session.createCriteria(Materiaprima.class)
  6.                     .add(Restrictions.eq("mpEstado", true))
  7.                     .createCriteria("unidad")
  8.                     .add(Restrictions.like("uniNombre", unidad + "%"))
  9.                     .setFetchMode("unidad", org.hibernate.FetchMode.JOIN)
  10.                     .setFetchMode("tipo", org.hibernate.FetchMode.JOIN);
  11.             materiaprimas = crit.list();
  12.             session.getTransaction().commit();
  13.         } catch (Exception e) {
  14.             session.getTransaction().rollback();
  15.             System.out.println(e.getMessage());
  16.         }
  17.         session.close();
  18.         return materiaprimas;
  19.     }
Esta es para realizar un filtro por nombre de unida.
Con este siguiente codigo muestro en consola los resultados
Código Java:
Ver original
  1. @Test
  2.     public void listaUnidad() {//      
  3.         MateriaprimaDao materiaprimaDao = new MateriaprimaDaoImpl();
  4.         List<Materiaprima> materiaprimas = null;
  5.         materiaprimas = materiaprimaDao.porUnidad("K");
  6.         for (Materiaprima materiaprima : materiaprimas) {
  7.             System.out.println(materiaprima.getMpNombre() + ", " + materiaprima.getUnidad().getUniNombre());
  8.         }
  9.        
  10.     }

Hasta aqui muestra correctamente los 400 registros, el problema es cuando intento mostrar el nombre del tipo;
Código Java:
Ver original
  1. .
  2. .
  3. .
  4. System.out.println(materiaprima.getMpNombre() + ", " + materiaprima.getUnidad().getUniNombre() + materiaprima.getTipo().getTipNombre());

No encuentro la manera de mostrar el nombre del tipo, cuando lo implemento en jsf me sale que la propiedad materiaprima.tipo.tipNombre es nulo y el en JunitTest no muestra nada.
Espero puedan guiarme.. Gracias

PD: Estoy trabajando con primefaces, anteriormente usaba el filtro que tiene el datatable, pero en esta ocasion son mas de 3000 mil de registros y cargar toda la tabla me demora mas de lo normal

Etiquetas: hibernate, querys
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:14.