Integer
/*************************************************************************************************/
/*************************************************************************************************/
/********** SPECIFICATION: nombreLikeOrdenadoByNombre *********************/
/*************************************************************************************************/
/*************************************************************************************************/
public static Specification<PeriodoAnual> anoEquals(final Integer ano) {
return new Specification<PeriodoAnual>() {
@Override
public Predicate toPredicate(Root<PeriodoAnual> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Expression x = root.get("ano");
Expression y = cb.literal(ano);
return cb.equal(x, y);
}
};
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
Boolean
/*************************************************************************************************/
/*************************************************************************************************/
/**************** SPECIFICATION: activoEquals *************************/
/*************************************************************************************************/
/*************************************************************************************************/
public static Specification<ClienteTavo> activoEquals(final Boolean activo) {
return new Specification<ClienteTavo>() {
@Override
public Predicate toPredicate(Root<ClienteTavo> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Expression x = root.get("activo");
Expression y = cb.literal(activo);
return cb.equal(x, y);
}
};
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
String
/*************************************************************************************************/
/*************************************************************************************************/
/**************** SPECIFICATION: nombreLikeOrdenadoByNombre *************************/
/*************************************************************************************************/
/*************************************************************************************************/
public static Specification<ClienteTavo> nombreLikeOrdenadoByNombre(final String query) {
return new Specification<ClienteTavo>() {
@Override
public Predicate toPredicate(Root<ClienteTavo> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Expression x = root.get("nombre");
Expression y = cb.literal("%" + query + "%");
cq.orderBy(cb.asc(x));
return cb.like(cb.upper(x), cb.upper(y));
}
};
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
Fechas
/*************************************************************************************************/
/*************************************************************************************************/
/**************** SPECIFICATION: nombreLikeOrdenadoByNombre *************************/
/*************************************************************************************************/
/*************************************************************************************************/
public static Specification<ClienteTavo> fechaDeNacimientoLessThan(final Date fechaNacimiento) {
return new Specification<ClienteTavo>() {
@Override
public Predicate toPredicate(Root<ClienteTavo> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Expression x = root.get("fechaNacimiento");
Expression y = cb.literal(fechaNacimiento);
return cb.lessThan(x, y);
}
};
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
public static Specification<PlanAporteEstrategico> periodoAnualEntre(final Integer anno) {
return new Specification<PlanAporteEstrategico>() {
@Override
public Predicate toPredicate(Root<PlanAporteEstrategico> root, CriteriaQuery<?> cq,
CriteriaBuilder cb) {
// build query here
Expression x = root.join("periodoAnualInicial").get("ano");
Expression y = root.join("periodoAnualFinal").get("ano");
Expression z = cb.literal(anno);
return cb.between(z,x,y);
}
};
}
Subconsultas
/*************************************************************************************************/
/*************************************************************************************************/
/**************** SPECIFICATION: tipoEtapaPorTipoPlan *************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*
* Documentación:
* SELECT * FROM TIPO_ETAPA WHERE ID_TIPO_ETAPA IN (SELECT TIPO_ETAPA FROM ETAPA_PLAN WHERE TIPO_PLAN = 3);
*
*/
public static Specification<TipoEtapa> tipoEtapaPorTipoPlan(TipoPlan tipoPlan) {
return new Specification<TipoEtapa>() {
@Override
public Predicate toPredicate(Root<TipoEtapa> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
//Subquery
Subquery<EtapaPlan> queryEtapaPlan = cq.subquery(EtapaPlan.class);
Root rootEtapaPlan = queryEtapaPlan.from(EtapaPlan.class);
// Expresión1: EtapaPLan
Expression selectTipoEtapa = rootEtapaPlan.get("tipoEtapa");
Expression whereTipoPlan = rootEtapaPlan.get("tipoPlan");
Expression litTipoPlan = cb.literal(tipoPlan);
queryEtapaPlan.select(selectTipoEtapa).where(cb.equal(whereTipoPlan, litTipoPlan));
// Expresión2: TipoEtapa
Expression whereIdTipoEtapa = root.get("id");
// return
return whereIdTipoEtapa.in(queryEtapaPlan);
}
};
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/