Trazendo apenas uma coluna usando Hibernate
Muitos já devem ter se deparado com situações onde se faz necessário que apenas não mais que uma coluna da tabela seja trazida, o Hibernate oferece uma solução pra isso usando HQL. Para isso vamos usar a Classe Consulta como exemplo, ela tem um relacionamento com a Classe médico e desejamos trazer todos os horário com consultas ativas de um determinado médico em um determinado dia.
Crie a seguinte query HQL:
StringBuffer hql = new StringBuffer();
hql.append("SELECT hora FROM Consulta ");
hql.append("WHERE crm_medico=:crm ");
hql.append("AND status=:status ");
hql.append("AND data=:data ");
Nessa query fazemos a seleção apenas da coluna hora, que é o dado buscado, e mais abaixo declaramos os parâmetros.
Crie a query e a transação:
Transaction tx = session.beginTransaction();
Query query = session.createQuery(hql.toString());
Passe os parâmetros:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
query.setString("crm", crm);
query.setBoolean("status", true);
query.setString("data", sdf.format(data));
Note que usamos um SimpleDateFormat na data e passamos a mesma como string na nossa query.
Por fim faça o commit e passe a lista retornada para uma lista do tipo de dado buscado no nosso caso uma lista de Date.
tx.commit();
horarios=(List<Date>) query.list();