Java - Seleccionar elemento de colección con hql

   
Vista:

Seleccionar elemento de colección con hql

Publicado por Adiel (1 intervención) el 21/06/2014 03:14:54
Tengo un incoveniente con este método:
Me sale esta excepción:

e.queryString="FROM entidad.Historia h WHERE h.pacientes=entidad.Paciente@3ad3a221" e.detailMessage="unexpected char: '@'"

Uno de los campos de Historia es una colección llamada pacientes del tipo Paciente. El detalle es que ésta colección tiene un solo elemento, es decir un solo paciente.
Lo que necesito es que el query seleccione un objeto historia cuando el único elemento de la colección pacientes sea igual al objeto paciente que es pasado al método a través del parámetro.

public Historia BuscarHistoria(Paciente paciente) {
Historia model=null;
Session sesion=util.HibernateUtil.getSessionFactory().getCurrentSession();
String sql="FROM Historia as h WHERE h.pacientes="+paciente;

try{
sesion.beginTransaction();
model=(Historia) sesion.createQuery(sql).uniqueResult();

sesion.beginTransaction().commit();

}
catch(Exception e){
sesion.beginTransaction().rollback();
}
return model;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Seleccionar elemento de colección con hql

Publicado por Maverick (96 intervenciones) el 24/06/2014 23:47:07
Estimado Adiel,

Con referencia al HQL sugiero que no pongas como parámetro el objeto paciente puesto que por defecto llama al método toString y el cual te devuelve el identificador @4541212 (ese dato es un aleatorio).

Debes buscar el paciente por el codigo vale decir:

Map<String, Object> parameters = new HashMap<String, Object>();

parameters.put("codigo", paciente.getCodigo();

String sql="FROM Historia as h WHERE h.pacientes.codigo = :codigo";

Cualquier inconveniente no dudes escribirme a: oscardelphi@gmail.com

Saludos cordiales,

Lima - Perú
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar