Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jhonatanAsm en 24 Enero 2015, 18:18 pm



Título: [Solucionado] no entiendo como se traduce esta consulta en hibernate
Publicado por: jhonatanAsm en 24 Enero 2015, 18:18 pm
hola, me podrían ayudar a entender esta consulta en hibernate:

Código
  1.  
  2. String SQL_rolPersonal =
  3. "SELECT usuarioRolPersonal.rolPersonal
  4. FROM UsuarioRolPersonal usuarioRolPersonal
  5. WHERE usuarioRolPersonal.usuario.idUsuario = "+usuario.getIdUsuario();
  6.  
  7. RolPersonal rolPersonal = (RolPersonal) sessionFactory.getCurrentSession().createQuery(SQL_rolPersonal).uniqueResult();
  8.  
  9.  

primero se declara la query, y luego se ejecuta y se guarda en el objeto rolPersonal, lo que yo no entiendo es a qué tabla y columna llama esa query, ya que yo no tengo ninguna tabla con el nombre UsuarioRolPersonal. saludos.


Título: Re: no entiendo como se traduce esta consulta en hibernate
Publicado por: jhonatanAsm en 24 Enero 2015, 18:33 pm
ok ok ok, xD

resulta que UsuarioRolPersonal es una clase, y tiene un objeto de tipo Usuario, y este objeto usuario tiene un atributo llamado idUsuario.

bueno, la documentación dice que createQuery es para hacer querys usando Clases java.


Título: Re: [Solucionado] no entiendo como se traduce esta consulta en hibernate
Publicado por: Usuario Invitado en 24 Enero 2015, 20:53 pm
Claro. Recuerda que con los ORM trabajas siempre en base a objetos. Aunque UsuarioRolPersonal es una clase Java, representa a la tabla usuariorolpersonal. Por lo que los atributos de ésta clase, hacen referencia a las columnas de dicha tabla.

Supongo que Hibernate hará una consulta como:

Código
  1. SELECT * FROM usuariorolpersonal u
  2. WHERE u.id_usuario IN
  3. (SELECT u.id_usuario FROM usuario u)

En tu archivo persistence.xml, puedes añadir la propiedad "show_sql" para ver el código SQL que fabrica Hibernate:
Código
  1. <property name="show_sql" value="true"/>

Te recomiendo usar Hibernate como implementación de JPA y no Hibernate nativo. Usar siempre los estándars tienen sus ventajas. Además, siempre es posible obtener la sesión original de Hibernate para poder extender un poco JPA. Pero como recomendación, usar JPA con Hibernate o EclipseLink.


Título: Re: [Solucionado] no entiendo como se traduce esta consulta en hibernate
Publicado por: jhonatanAsm en 25 Enero 2015, 02:44 am
gracias, pero tengo una duda,
cómo sabes que no uso a hibernate como implementación de JPA??


Título: Re: [Solucionado] no entiendo como se traduce esta consulta en hibernate
Publicado por: Usuario Invitado en 25 Enero 2015, 14:28 pm
Lo asumo al leer ésta línea donde obtienes la sesión de Hibernate:

Código
  1. RolPersonal rolPersonal = (RolPersonal) sessionFactory.getCurrentSession().createQuery(SQL_rolPersonal).uniqueResult();

Si usaras JPA harías:

Código
  1. em.getTransaction().begin();
  2. Query query = em.createQuery(sql);
  3. ...


Título: Re: [Solucionado] no entiendo como se traduce esta consulta en hibernate
Publicado por: jhonatanAsm en 25 Enero 2015, 17:51 pm
gracias, que amable :)