Problemas com busca de dados.. usando hibernate

Bom dia pessoal… to com um problema … to desenvolvendo uma classe prontuario… com as funções cadastrar, buscar, atualizar, excluir… a função de cadastro ja ta tudo ok… mas nao to conseguindo buscar o objeto do banco… a classe prontuario se relaciona com a classe paciente… atraves de um relacionamento 1x1…

Vo postar as classes…

Minha duvida é como fazer para buscar um determinado prontuario do banco atraves do nome do paciente…

//classe prontuario


@Entity 
@Table(name = "prontuario") 
public class Prontuario implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE) 
@Column(name = "id") 
private Integer id; 

//relacionamento com a tabela paciente........... 
@OneToOne 
@JoinColumn(name = "id_paciente") 
private Paciente id_paciente; 

private String altura; 

private String peso; 

private String historico; 


private String data_criacao; 


private String ultima_consulta; 

private String tipo_sanguineo; 


//mapeamento do relacionamento com a classe questionario 
@OneToOne(mappedBy="id_prontuario", cascade = CascadeType.ALL) 
private Questionario questionario; 


//segue os getters e setters .... 

classe paciente


@Entity 
@Table(name = "paciente") 
@SuppressWarnings("serial") 
public class Paciente implements Serializable { 

@Id 
@Column(name = "id_paciente") 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Integer id; 

@Column(name = "nome") 
private String nome; 
@Column(name = "cpf", unique = true) 
private Long cpf; 
@Column(name = "rg") 
private Long rg; 
@Column(name = "data_nasc") 
@Temporal(TemporalType.DATE) 
private Date data_nasc; 
@Column(name = "nome_mae") 
private String nome_mae; 
@Column(name = "nome_pai") 
private String nome_pai; 
@Column(name = "endereco") 
private String endereco; 
@Column(name = "numero") 
private Integer numero; 
@Column(name = "complemento") 
private String complemento; 
@Column(name = "bairro") 
private String bairro; 
@Column(name = "nacionalidade") 
private String nacionalidade; 
@Column(name = "naturalidade") 
private String naturalidade; 
@Column(name = "uf") 
private String uf; 
@Column(name = "contato") 
private Integer contato; 
@Column(name = "email") 
private String email; 

// mapeamento para relacionamento 1-1 com consulta 
@OneToOne(mappedBy="id_paciente", cascade = CascadeType.ALL) 
private Consulta consulta; 

// mapeamento para o relacionamento com prontuario.... 
@OneToOne(mappedBy="id_paciente", cascade=CascadeType.ALL) 
private Prontuario prontuario; 

//segue os getters e setters ---------- 

a classe ProntuarioDAO… que faz as operações com o banco


public class ProntuarioDAO { 

Session sessao = HibernateUtilAnnotation.getInstance(); 
Transaction tx = null; 

public void inserir(Prontuario p) throws SQLException { 
if (p != null) { 
try { 
tx = sessao.beginTransaction(); 
sessao.save(p); 
tx.commit(); 
JOptionPane.showMessageDialog(null, "Prontuario Cadastrado!"); 

} catch (HibernateException e) { 
e.printStackTrace(); 
tx.rollback(); 
} finally { 
sessao.close(); 
} 

}//fim do if 

}//fim do metodo inserir....... 

public void excluir(Prontuario p) throws SQLException { 
if (p != null) { 
try { 
tx = sessao.beginTransaction(); 
sessao.delete(p); 
tx.commit(); 
JOptionPane.showMessageDialog(null, "Prontuario Excluído!"); 

} catch (HibernateException e) { 
e.printStackTrace(); 
tx.rollback(); 
} finally { 
sessao.close(); 
} 

}// fim do if......... 

}// fim do metodo deletar............ 

public Prontuario obter(Integer pac) throws SQLException { 
Prontuario p = null; 
if (pac != null) { 
Query q = sessao.createQuery("from Prontuario p where p.id_paciente" + 
" like :id_paciente"); 
q.setInteger("id_paciente", pac); 
p = (Prontuario) q.uniqueResult(); 
if(p == null){ 
JOptionPane.showMessageDialog(null, "Prontuario nao Cadastrado"); 
} 
} 
return p; 

}// fim do metodo obter............ 

public void atualizar(Prontuario p) throws SQLException { 
if (p != null) { 
try { 
tx = sessao.beginTransaction(); 
sessao.update(p); 
tx.commit(); 
JOptionPane.showMessageDialog(null, "Dados do Prontuario Atualizado!"); 

} catch (HibernateException e) { 
e.printStackTrace(); 
tx.rollback(); 
} finally { 
sessao.close(); 
} 


}//fim do if......................... 

}// fim do metodo atualizar............... 

public List<Prontuario> listar() { 
List<Prontuario> retorno = null; 
Query q = sessao.createQuery("from Prontuario"); 
retorno = q.list(); 

return retorno; 

}//fim do metodo listar................ 


} 

agradeço antecipadamente pela ajuda