Foros del Web » Programación para mayores de 30 ;) » Java »

Interpretacion Query Hibernate

Estas en el tema de Interpretacion Query Hibernate en el foro de Java en Foros del Web. Hola amigos soy nuevo en el tema y les pido su ayuda para poder entender este fragmento de codigo. Código PHP: Criteria criteria  =  session . ...
  #1 (permalink)  
Antiguo 27/10/2009, 17:17
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 16 años
Puntos: 2
Interpretacion Query Hibernate

Hola amigos soy nuevo en el tema y les pido su ayuda para poder entender este fragmento de codigo.

Código PHP:
Criteria criteria session.createCriteria(Caplaza.class)
    .
add(Restrictions.not(Restrictions.eq("region""0")))
    .
setProjection(Projections.projectionList().add(Projections.groupProperty("idregional")));
    
criteria.add(Restrictions.isNull("fechaobsol"));
    
lRegiones criteria.list(); 
la verdad entiendo un poco lo primero es que va a hacer una busqueda en Caplaza donde region sea <> de 0 pero de ahi me perdo por que no entiendo esto del groupProperty("idregional") el idRegional es un campo de mi tabla y entiendo que fechaobsol debe ser null ayudenme por favor a entender bien que dice este script se los agradezco de antemano
  #2 (permalink)  
Antiguo 28/10/2009, 03:24
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Interpretacion Query Hibernate

Wenas

Código:
select * from Capplaza
where region <> 0
and fechaobsol is null
group by idregional
Un saludo.

PD. Siempre puedes ver la query que ejecutas si pones la propiedad show_sql de tu fichero cfg.xml a true.
  #3 (permalink)  
Antiguo 28/10/2009, 09:31
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 16 años
Puntos: 2
Respuesta: Interpretacion Query Hibernate

gracias elAntonie voy a probar el query, lo que sucede es que ese codigo no es mio lo hizo una persona que ya no trabaja aqui y no sabia como interpretarlo.

gracias pruebo y aviso
  #4 (permalink)  
Antiguo 28/10/2009, 10:59
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Interpretacion Query Hibernate

Bueno, ten en cuenta, que te pongo select * porque no tengo ni idea de como es la clase Capplaza, pero evidentemente, no se puede hacer un group by asi. Un group by tiene sentido si hay una funcion acumulativa en la select (count, sum,...)

seria:

select campo1, count(campo2)
from tabla
group by campo1

Saludos.
  #5 (permalink)  
Antiguo 30/10/2009, 12:21
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 16 años
Puntos: 2
Respuesta: Interpretacion Query Hibernate

He resulto mis dudas el query que mensiono al inicio del post quedaria asi

Código PHP:
select cap.idregional
from caplaza cap
where region 
!= '0' and fechaobsol is null
group by cap
.idregional 
Esto es en hibernate
Código PHP:
Criteria criteria session.createCriteria(Caplaza.class)
    .
add(Restrictions.not(Restrictions.eq("region""0")))
    .
setProjection(Projections.projectionList().add(Projections.groupProperty("idregional")));
    
criteria.add(Restrictions.isNull("fechaobsol"));
    
lRegiones criteria.list(); 
Para quien quiera entender mejor el manejo de criteria pueden leer este pdf que encontre en ingles pero esta muy bien explicado y el ingles es sencillo gracias a elAntonie por su introduccion y por su tiempo
  #6 (permalink)  
Antiguo 02/11/2009, 02:36
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Interpretacion Query Hibernate

Gracias por la parte que me toca. Y esta bien eso para aprender un poco de hibernate.

Pero si sabes un poco de BBDD te daras cuenta de que hacer esto:

Código:
select cap.idregional
from caplaza cap
where region != '0' and fechaobsol is null
group by cap.idregional
Es absurdo por lo que te comente antes. Un group by no tiene sentido si no se usa con una funcion acumulativa. En este caso, el group by sobra.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.