- Consultas
Manejo de Campos Complejos: Se utilizan expresioens como Expressions.
Campos Condicionales: Emplean NumberExpression o StringExpression.
- Igualdad:
equaloeq - Desigualdad:
not equalone - Menor que:
less thanolt - Mayor que:
greater thanogt - Manor o igual:
less than or equaloloe - Mayor o igual:
greater than or equalogoe
Consultas Dinámicas
class OrdenDTO {
@QueryProjection
public OrdenDTO(long idOrden, String descripcion) {
// Constructor para proyección
}
}
List<OrdenDTO> listaOrdenes = consulta.select(new QOrdenDTO(orden.id, orden.desc))
.from(orden).fetch();
Subconsultas
QProducto producto = QProducto.producto;
QProducto productoSecundario = new QProducto("prod_sec");
fabricaConsultas.select(producto.all())
.from(producto)
.where(producto.stock.eq(
SQLExpressions.select(productoSecundario.stock.max()).from(productoSecundario)))
.fetch();
Consultas Avanzadas
NumberExpression<Long> idReporte = new CaseBuilder()
.when(reporte.idProyecto.isNull()).then(reporte.idGrupo)
.otherwise(reporte.idProyecto);
StringExpression tipoEntidad = new CaseBuilder()
.when(reporte.idProyecto.isNull()).then("Proyecto Interno")
.otherwise("Proyecto Externo");
fabricaConsultas.select(Projections.constructor(DetalleCreacion.class,
Expressions.constant("Estrategia de Cliente"),
actividad.fecha.year(),
actividad.fecha.month(),
actividad.fecha.dayOfMonth(),
actividad.usuario,
actividad.nombreUsuario,
Expressions.constant(String.format("(%s)%s", actividad.codigoCliente, actividad.nombreCliente)),
actividad.item_id.stringValue(),
actividad.nota,
actividad.codigoCliente,
actividad.tipoZona,
idReporte,
tipoEntidad,
actividad.fecha,
actividad.id,
actividad.fechaCreacion
)).from(actividad).where(condicion).fetch();
Números de Fila
fabricaConsultas.select(SQLExpressions.rowNumber()
.over()
.partitionBy(estudiante.nombre)
.orderBy(estudiante.id))
.from(estudiante);
- Actualización
1 fabricaConsultas.update(qInventario)
2 .set(qInventario.activo, true)
3 .set(qInventario.fecha_activacion, UtilFecha.aFechaSistema(System.currentTimeMillis()))
4 .where(qInventario.codigo.eq(mensaje))
5 .execute();
- Eliminación
1 fabricaConsultas.delete(qInventario)
2 .where(qInventario.codigo.eq(mensaje))
3 .execute();