Hibernate[Resolvido]

saudações…
estou com uma dúvida aki. Tenho 2 classes mapeadas, estão abaixo:

public class Cliente implements java.io.Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="INC_CLIENTE")
    private Integer idCliente;
    @Column
    private String nome;
    @Column
    private String site;
    @Column
    private String cpfCnpj;
    @OneToMany(mappedBy="idCliente")
    private List<Telefone> telefones;

e

public class Telefone implements java.io.Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="INC_TELEFONE")
    private Integer idTelefone;
    @ManyToOne()
    @JoinColumn(name="IDCLIENTE")
    private Cliente idCliente;
    @Column
    private String telefone;

tenho uma classe ClienteDao, e essa classe contém o seguinte método:

protected <T extends Serializable> T readById(Integer id, Class<T> type) {
        Session session = getSession();
        Serializable toReturn = null;
        try {            
            toReturn = (Serializable) session.get(type, id);
            session.getTransaction().commit();
        } catch (Exception ex) {
            session.getTransaction().rollback();
        } finally{
            session.close();  
            return (T) toReturn;                      
        }
    }

quando vou recuperar um registro do banco de dados e tentar escrevê-lo na tela functiona tudo bem até a parte da lista de telefones. Me mostra um erro:

se eu tiro o session.close, fica tudo blza. Minha dúvida é sobre o session.close, quero dizer, eu preciso fechá-la não é? Como eu faço, não posso simplismente tirar essa linha. Alguém tem alguma idéia?

Meu caro, esse link pode resolver seu problema:
http://javafree.uol.com.br/topic-9455-Hibernate-Lazy-=&quottrue%22.html?page=1

:?:

ok amigo, obrigado. Resolveu meu problema…

@OneToMany(mappedBy="idCliente",fetch=FetchType.EAGER) private List<Telefone> telefones;Desse modo a lista de telefones é carregada junto com o cliente todas as vezes.
Se essa for sua vontade taí a solução, mas se na maioria das vezes vc nao precisar da lista de telefones, vc estaria fazendo consultas desnecessarias ao banco, nesse caso aconselho deixar como está e chamar a lista ainda com a session aberta que carrega a lista apenas quando vc precisar. (OBS: apenas pra dar load não precisa de transaction)