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

Hibernate Criteria devuelve null...

Estas en el tema de Hibernate Criteria devuelve null... en el foro de Java en Foros del Web. Código: try{ Criteria crit = ss.createCriteria(PendienteRegistro.class); pr = (PendienteRegistro) crit.add(Restrictions.like("usuario", usuario)).add(Restrictions.like("codigo", codigo)).uniqueResult(); }catch(Exception e){ e.printStackTrace(); } Esta simple consulta generada con Criteria no me devuelve ...
  #1 (permalink)  
Antiguo 15/01/2009, 03:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Hibernate Criteria devuelve null...

Código:
        try{
        Criteria crit = ss.createCriteria(PendienteRegistro.class);
        pr = (PendienteRegistro) crit.add(Restrictions.like("usuario", usuario)).add(Restrictions.like("codigo", codigo)).uniqueResult();
        }catch(Exception e){
            e.printStackTrace();
        }
Esta simple consulta generada con Criteria no me devuelve absolutamente nada, pone pr a null...

La consulta generada por Hibernate segun show_sql es:
Código:
Hibernate: select this_.usuario as usuario1_0_, this_.contrasena as contrasena1_0_, this_.email as email1_0_, this_.codigo as codigo1_0_ from pendiente_registro this_ where this_.usuario like ? and this_.codigo like ?
Esa misma consulta copiada y pegada en la linea de comandos de mysql con las "?" remplazadas por su valor, funciona correctamente, devuelve la fila correcta.

Las variables "usuario" y "codigo" llegan correctamente, con los datos copiados del debug y pegados en la consulta manual de mysql que funciona correctamente.

No lanza ninguna excepcion...

¡¡¡NO SE QUE PUEDE PASAR!!!
  #2 (permalink)  
Antiguo 15/01/2009, 03:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Hibernate Criteria devuelve null...

Código:
            Query query = ss.createSQLQuery("select * from pendiente_registro where usuario like 'asd' and codigo like '7815696ecbf1c96e6894b779456d330e'").addEntity(PendienteRegistro.class);
            pr = (PendienteRegistro) query.uniqueResult();
Para comprobar que la clase y su hbm.xml estaba correctamente he generado la consulta con hibernate de otra manera y ha funcionado perfectamente...

Al principio, he insertado en el select la consulta que me generaba el Criteria, y me ha dado una excepcion de que "la columna "usuario" no existia", cuando evidentemente existe...

¿Alguien sabe que puede estar fallando?

PD: Los datos que salen en la consulta son de prueba... asi que no pasa nada xD.
  #3 (permalink)  
Antiguo 15/01/2009, 04:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Hibernate Criteria devuelve null...

Bueno, estoy flipando una barbaridad... Si hago la consulta directa como antes funciona correctamente, pero si hago esto:

Código:
try {
            Query query = ss.createSQLQuery("select * from pendiente_registro where usuario like ? and codigo like ?").addEntity(PendienteRegistro.class);
            query.setString(0, usuario);
            query.setString(1, codigo);
            pr = (PendienteRegistro) query.uniqueResult();
        } catch (Exception e) {
            e.printStackTrace();
        }
Me devuelve null como el Criteria......... Y ES LO MISMO.
  #4 (permalink)  
Antiguo 15/01/2009, 12:13
 
Fecha de Ingreso: julio-2007
Mensajes: 19
Antigüedad: 16 años, 9 meses
Puntos: 0
Mensaje Respuesta: Hibernate Criteria devuelve null...

Hola, A mi me Paso Una Vez, Fui A lA BD realize la consulta, y Habia mas De Un Objeto , Asi q me el UniqueResult me devolvio null, asi q io intentaria Buscar La cantidad de registros q cumplen esa condicion.

JHONPi.
  #5 (permalink)  
Antiguo 15/01/2009, 16:29
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Hibernate Criteria devuelve null...

Cita:
Iniciado por JhonPierre Ver Mensaje
Hola, A mi me Paso Una Vez, Fui A lA BD realize la consulta, y Habia mas De Un Objeto , Asi q me el UniqueResult me devolvio null, asi q io intentaria Buscar La cantidad de registros q cumplen esa condicion.

JHONPi.
Ante todo JhonPierre, gracias por la respuesta.

Uno, un registro, el de prueba que deberia recoger.
  #6 (permalink)  
Antiguo 16/01/2009, 00:29
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Hibernate Criteria devuelve null...

¿Has mirado el SQL que genera Hibernate en cada caso para ver donde esta la diferencia?
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 16/01/2009, 04:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Hibernate Criteria devuelve null...

Cita:
Iniciado por GreenEyed Ver Mensaje
¿Has mirado el SQL que genera Hibernate en cada caso para ver donde esta la diferencia?
Antes de todo y como al primer compañero, gracias por tu interes GreenEyed.

Si, lo mire con la consulta del createSQLQuery, y la consulta creo recordar que era la misma (cuando llege a casa lo compruebo denuevo), pero vamos, con esa sensacion de "si es lo mismo" me quede.

La cuestion ademas, como ya he dicho, es que la consulta que crea ese Criteria, que es la que he puesto en el primer post (la que pongo abajo), funciona correctamente si la copio/pego en la consola de comandos de mysql y sustituyo las interrogantes por sus respectivos valores:

Código:
Hibernate: select this_.usuario as usuario1_0_, this_.contrasena as contrasena1_0_, this_.email as email1_0_, this_.codigo as codigo1_0_ from pendiente_registro this_ where this_.usuario like ? and this_.codigo like ?
  #8 (permalink)  
Antiguo 16/01/2009, 05:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Hibernate Criteria devuelve null...

Me refiero a que Hibernate tiene una opcion para sacar por los logs la sentencia SQL literal que ejecuta contra la BDD. Con estos problemas, mirar las sentencias HQL no sirve por que los parametros etc. pueden modificar la consulta final. Hay que mirar el SQL que se envia por el driver JDBC.

Si no recuerdo mal, hay que poner una linea algo asi :

log4j.logger.org.hibernate.SQL=debug

en el fichero de configuracion log4j.properties

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #9 (permalink)  
Antiguo 16/01/2009, 09:10
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Hibernate Criteria devuelve null...

Cita:
Iniciado por GreenEyed Ver Mensaje
Me refiero a que Hibernate tiene una opcion para sacar por los logs la sentencia SQL literal que ejecuta contra la BDD. Con estos problemas, mirar las sentencias HQL no sirve por que los parametros etc. pueden modificar la consulta final. Hay que mirar el SQL que se envia por el driver JDBC.

Si no recuerdo mal, hay que poner una linea algo asi :

log4j.logger.org.hibernate.SQL=debug

en el fichero de configuracion log4j.properties

S!
Ah!..., pues no utilizo log4j..., creia que la unica forma de mostrar la sentencia era esta..., despues mirare como se hace esto porque si me puede mostrar la sentencia entera mucho mejor...
  #10 (permalink)  
Antiguo 16/01/2009, 11:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Hibernate Criteria devuelve null...

Pruebalo por que aunque tu no uses log4j, Hibernate internamente si . Así en breve, tienes que poner un fichero llamado log4j.properties en el classpath (WEB-INF/classes es un buen sitio) y ponerle algo como...

Cita:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppe nder
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.Patt ernLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ ABSOLUTE} %5p - %m%n

log4j.rootLogger=warn, stdout

# HIBERNATE LOG4J SETTINGS
log4j.logger.org.hibernate=info
log4j.logger.org.hibernate.SQL=debug
# END HIBERNATE LOG4J SETTINGS
Con eso deberia sacarte los mensajes de Hibernate por la consola de error (o fichero de error segun tengas configurado el contenedor de servlets). Para mas información, consulta el manual del log4j o busca en Internet con "log4j Hibernate settings" o similares.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #11 (permalink)  
Antiguo 16/01/2009, 16:22
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Hibernate Criteria devuelve null...

Cita:
Iniciado por GreenEyed Ver Mensaje
Pruebalo por que aunque tu no uses log4j, Hibernate internamente si . Así en breve, tienes que poner un fichero llamado log4j.properties en el classpath (WEB-INF/classes es un buen sitio) y ponerle algo como...



Con eso deberia sacarte los mensajes de Hibernate por la consola de error (o fichero de error segun tengas configurado el contenedor de servlets). Para mas información, consulta el manual del log4j o busca en Internet con "log4j Hibernate settings" o similares.

S!
No he conseguido hacer funciona el log4j, me daba incompatibilidades con JForum...

Pero eso si, he solucionado el problema, con la inestimable colaboracion de mi vista, no me estaba dando cuenta que en el debug las variables eran de la siguiente forma "'variable'", es decir, estaba creando unos enlaces por GET url y le habia cascado las '' a los valores, y no lo estaba viendo... por eso cuando metia los valores directamente funcionaba todo correctamente.

En fin, muchisimas gracias por vuestro interes y lamento mucho haberos hecho perder el tiempo por esta tonteria.
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 20:58.