Filtros en Hibernate

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Permiten activar o desactivar modificaciones en nuestras consultas. Personalmente, me parecen algo engorrosos:

Libro.java

@FilterDefs({
	@FilterDef(name = "priceFilter",
		parameters = {
			@ParamDef(name="minPrice", type="java.lang.Integer"),
			@ParamDef(name="maxPrice", type="java.lang.Integer")

		}
	),
	@FilterDef(name = "letraFilter",
		parameters = {
			@ParamDef(name="letraParam", type="java.lang.String"),
		}
	)
})

@Filters({
	@Filter(name = "priceFilter", condition = "precio >= :minPrice and precio <= :maxPrice"),
	@Filter(name = "letraFilter",
		condition = "titulo LIKE :letraParam")
})

@Entity
public class Libro {
	...

Ficheros Java

Filter letraFilter = session.enableFilter("letraFilter");
letraFilter.setParameter("letraParam", "%e%");
Filter priceFilter = session.enableFilter("priceFilter");
priceFilter.setParameter("minPrice", -5);
priceFilter.setParameter("maxPrice", 400);

Cómo acceder a la sesión de hibernate si estamos usando JPA para añadir los filtros

Session session = em.unwrap(Session.class);

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.