Obter um dado da tabela com 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 prontuario do banco…


@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