You are on page 1of 4

18/4/2015

JavierFerrandiz|EllenguajeJPQL

Siempreadelantesin

JavierFerrandiz

precipitacinperosinpausa.

EnterpriseJavaBeans

Hibernate

Spring

SobreM
Buscar

EllenguajeJPQL

Buscar

Publicadoel17/07/2014porjavier
Entradasrecientes

EllenguajeJPQL
EllenguajedeconsultaJPQLtrabajasobreclasesyobjetospararealizarconsultasenelmundoJava,mientras
queSQLtrabajasobretablas,columnasyfilasenbasesdedatosrelacionales.Cuandorealizamosconsultasen
JPQLlaarquitecturaJPAseocupadeconvertirlaenunaconsultaSQL.

ContenedorSpring
QuesunStatefulSession
Bean?
QuesunStatelessSession

ClusulasJPQL.

Bean?

SELECTespecificalaentidadovaloresarecuperar.

IntroduccinSpringMVC

FROMentidadautilizarenlaseleccinyrestodeclusulas.

GenericAccessDatacon

WHEREfiltrarresultados.

Hibernate

ORDERBYordenarresultados.
GROUPBYagrupacinderesultados.
HAVINGfiltradodeagrupaciones.

Archivos

SentenciaUPDATE

septiembre2014

EstaoperacinlapodemosrealizarconentityManagerconelmtodomerge,peroloquenosaportaesta

agosto2014

sentenciasonactualizacionesenmasa.

julio2014

UPDATEPiezap
SETp.peso=100,p.color=Rojo

Categoras

WHEREp.nompieLIKETuer%'

Hibernate

SentenciaDELETE
Igualqueocurrenconlasentenciaupdateestasentencianospermiteelborradoenmasa.

HibernateTemplate
JavaPersistenceQL
JdbcTemplate

DELETEProyectopj

MapeoORMJPA

WHEREpj.ciudad=Londres

SpringCore
SpringMVC

ClusulaSELECT

StatefulSessionBean
SELECTpieFROMPiezaASpie

SELECTpie.codigoPieza,pie.nombrePiezaFROMPiezapie

SELECTDISTINCTpie.colorFROMPiezapie

StatelessSessionBean

PodemosusarunconstructorenlaclusulaSELECTparaobtenerinstanciasdeobjetosinicializadosconlos
valoresdevueltosporlaconsulta,estosobjetosnotienenqueserentidadesoestarmapeados.

SELECTNEWcom.javierferrandiz.data.MiClase(pie.color,pie.peso)FROMPiezapieWHEREpie.peso>100

http://javierferrandiz.com/?p=267

1/4

18/4/2015

JavierFerrandiz|EllenguajeJPQL
ClusulaWHERE

SELECTpieFROMPiezapieWHEREpie.peso>100

Operadores
Relacionales:=,>,>=,<,<=,[NOT]BETWEEN,[NOT]LIKE,[NOT]IN,IS[NOT]NULL,IS[NOT]EMPTY,
[NOT]MEMBEROF
Logicos:ANDORNOT
OperadorBETWEEN

SELECTpieFROMPiezapieWHEREpie.peso[NOT]BETWEEN:minValueAND:maxValue

OperadorIN

SELECTpieFROMPiezapieWHEREpie.color[NOT]IN(Rojo,Verde,Azul)

SELECTpjFROMProyectopjWHEREpj[NOT]IN(SELECTv.proyectoFROMVentav)

OperadorLIKE

SELECTpieFROMPiezapieWHEREpie.nombrePieza[NOT]LIKETuerca

SELECTpieFROMPiezapieWHEREpie.nombrePieza[NOT]LIKET%

SELECTpieFROMPiezapieWHEREpie.nombrePieza[NOT]LIKE?1

SELECTpieFROMPiezapieWHEREpie.nombrePieza[NOT]LIKE:nombre

Valoresnulosycoleccionesvacias.
Paracomprobarsiuncampoesnuloono.

SELECTvFROMVentavWHEREv.proyectoIS[NOT]NULL

Paracomprobarsiunacoleccinestavaciaono.

SELECTpjFROMProyectopjWHEREpj.ventaIS[NOT]EMPTY

Paracomprobarsiunelementoperteneceaunacoleccin.

SELECTvFROMVentavWHERE:item[NOT]MEMBEROFv.proyecto

FuncionesdeAgregacin.
AVG,COUNT,MAX,MIN,SUM
Paraencontrarunvalormximo

SELECTMAX(pie.peso)FROMPiezapie

Paraencontrarelnmerodepiezas

SELECTCOUNT(pie)FROMPiezapie

GROUPBYyHAVING
Contarlosproveedoresquerealizansuministros.

SELECTv.proveedor.codigoProveedor,COUNT(v.proveedor)FROMVentavGROUPBYv.proveedor.codigoProveedor

Encontrarlosnombresdelosproveedorestalesquetodassusventassuperenlacantidadde100unidades.

http://javierferrandiz.com/?p=267

2/4

18/4/2015

JavierFerrandiz|EllenguajeJPQL
SELECTv.proveedor.nombreProveedor,SUM(v.cantidad)FROMVentavGROUPBYv.proveedor.nombreProveedorHAVINGSUM(v.cantidad)>100

Funcionesdecadenasdecaracteres.
CONCAT(str1,str2),SUBSTR(str,position,length),TRIM(str),LOWER(str),UPPER(str),LENGTH(str)

SELECTpieFROMPiezapieWHERELENGTH(pie.nombrePieza)>10

SELECTpieFROMPiezapieWHERECONCAT(pie.nombrePieza,pie.color)=TuercaRoja

Funcionesaritmticas
ABS(expresion),SQRT(expresion),MOD(dividendo,divisor),SIZE(coleccion)

SELECTpieFROMPiezapieWHERESIZE(pie.venta)>5

Ordenandoresultados.

SELECTpieFROMPiezapieWHEREORDERBYpie.nombrePiezaASC

SELECTpieFROMPiezapieWHEREORDERBYpie.nombrePiezaASC,pie.pesoDESC

Subconultas
LassubconsultassonusadasenlasclusularWHEREyHAVING,paralassubconsultasusamos[NOT]IN,[NOT]
EXISTS,ALL,ANYySOME,estastresltimassecombinanconlosoperadoresrelacionales=,<,<=,>,>=,<>

SELECTpieFROMPiezapieWHEREpieIN(SELECTv.piezaFROMVentavWHEREv.cantidad>100)

SELECTpjFROMProyectpjWHEREEXISTS(SELECTv.proyectoFROMVentavWHEREv.proyecto.codigoProyecto=pj.codigoProyecto)

SELECTvFROMVentavWHEREv.cantidad>=(SELECTAVG(v1.cantidad)FROMVentav1)

Asociacionesentreentidades.
INNERJOIN

SELECTpie.codigoPieza,v.cantidadFROMPiezapieINNERJOINpie.ventavWHEREv.cantidad>100

OUTERJOIN,LEFTJOIN,RIGTHJOIN
Pararecuperarlasentidadesadicionalesquenocumplenlacondicionyaseaporleladodeladerechaodela
izquierdadelarelacin.

SELECTpie.codigoPieza,v.cantidadFROMPiezapieLEFTOUTERJOINpie.ventavWHEREv.cantidad>100

JPQLpararecuperarentidades.

http://javierferrandiz.com/?p=267

3/4

18/4/2015

JavierFerrandiz|EllenguajeJPQL

Dejauncomentario
Nombre
Correoelectrnico(noserpublicado)
Web

Enviarcomentario

JavierFerrandiz,ProgramadorWeb.

ProgramadoyDiseadoporFJavierPuertasFerrndiz

http://javierferrandiz.com/?p=267

4/4

You might also like