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:
Esta es para realizar un filtro por nombre de unida.Ver original
List<Materiaprima> materiaprimas = null; try { session.getTransaction().begin(); Criteria crit = session.createCriteria(Materiaprima.class) .add(Restrictions.eq("mpEstado", true)) .createCriteria("unidad") .add(Restrictions.like("uniNombre", unidad + "%")) .setFetchMode("unidad", org.hibernate.FetchMode.JOIN) .setFetchMode("tipo", org.hibernate.FetchMode.JOIN); materiaprimas = crit.list(); session.getTransaction().commit(); session.getTransaction().rollback(); } session.close(); return materiaprimas; }
Con este siguiente codigo muestro en consola los resultados
Código Java:
Ver original
@Test public void listaUnidad() {// MateriaprimaDao materiaprimaDao = new MateriaprimaDaoImpl(); List<Materiaprima> materiaprimas = null; materiaprimas = materiaprimaDao.porUnidad("K"); for (Materiaprima materiaprima : materiaprimas) { } }
Hasta aqui muestra correctamente los 400 registros, el problema es cuando intento mostrar el nombre del tipo;
Código Java:
Ver original
. . . 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