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 originalpublic List
<Materiaprima
> porUnidad
(String unidad
) { 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();
System.
out.
println(e.
getMessage()); }
session.close();
return materiaprimas;
}
Esta es para realizar un filtro por nombre de unida.
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) {
System.
out.
println(materiaprima.
getMpNombre() + ", " + materiaprima.
getUnidad().
getUniNombre()); }
}
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