Problemas com Relacionamento (Lista)

2 respostas
M

Eu aqui novamente…

Estou com um problema.

Tenho uma classe que tenho 3 listas, todas funcionam perfeitamente. Precisei criar a quarta lista e está me dando muita dor de cabeça. Parece que esotu pecando em algo incrivelmente besta, ma ainda não descobri o que é.
Li as documentações do Hibernate, entretanto não consegui resolver meu problema.

Bom, vamos aos dados.

O XML de minha Classe o qual tenho a lista;

<set cascade="save-update" inverse="true" lazy="true" name="listaContratos">
        <key column="id" />
        <one-to-many class="br.com.mcluck.noiva.sites.Contrato"/>
    </set>

Meu XML de minha classe Contrato, referida no Set da Classe Noivos (do XML citado acima):

<many-to-one name="noivos" class="br.com.mcluck.noiva.sites.Noivos" cascade="all" fetch="join" update="true" insert="true" lazy="no-proxy" column="idnoivos" />

Este XML eu refiz de acordo com o que li na documentação do Hibernate, mas parece que entendi mau. Normalmente, faria assim (e funcionaria, pois como disse, tem outros 3 Sets na mesma classe e funcionam desta forma):

<many-to-one class="br.com.mcluck.noiva.sites.Noivos" column="idnoivos" name="noivos" lazy="proxy" />

Pelo que li na Documentação, poderia usar true nos lazys. Para que a lista seja carregada apenas quando solicitada, entretanto, se coloco true, o Hibernate falha no carregamento.

Da forma como está agora, está me dando o velho erro de tentativa de carregar uma coleção com uma sessão finalizada:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.mcluck.noiva.sites.Noivos.listaContratos, no session or session was closed

Sei que para quem tem experiência, o problema deve estar na cara, mas não tenho tanta experiência com Hibernate. Aprendo conforme uso e preciso.

Preciso de ajuda com isto, mas peço que sejam o mais detalhado possível, pois, como já mencionei, não tenho muita experiencia com Hibernate.

Agradeço toda a atenção dispensada.

Att,

McLuck

2 Respostas

V

Ola…

resolvi este problema setando esta propriedade

<prop key="hibernateFilter">org.springframework.orm.hibernate.support.OpenSessionInViewFilter</prop>

estou utilizando hibernate + spring, caso vc esteja utilizando apenas hibernate e configurando ele no arquivo hibernte.cfg, de uma pesquisa na net de como setar esta classe no arquivo hibernate.cfg.

M

Olá, “vdb”…

Pelo que li, isto este filtro só se aplica se estiver utilizando spring.
Minha aplicação, infelizmente não usa.
Ainda não encontrei nada que me indique como usar “OpenSessionInViewFilter” sem o spring. Estou ainda procurando, mas ainda queria entender como isto acontece. Isto é, porque os outros funcionam e este não.

Agradeço…

McLuck

Criado 18 de maio de 2009
Ultima resposta 19 de mai. de 2009
Respostas 2
Participantes 2