eu não usaria esse onetomany eu sempre não mapeio onetomany e crio metodos auxiliares nos DAO’s para filtrar ao maximo possivel e sempre retornar quando realmente eu quero e nunca tive problemas!
eu não uso o spring! usando o spring vc vai ter que usar o filter dele creio eu! caso não consiga não use o spring! por qual motivo vc esta usando ele?
Uso ele para IOC. Estou utilizando o Flex, e na arquitetura que foi definida o Spring é utilizado.
O problema é que eu já utilizaei o filter do OpenSession do Spring, mas não fucionou.
Mas se o hibernate tem essa estratégia de Lazy, quer dizer que deveria funcionar. O que eu estou querendo é utilizar o Spring+Hibernate de forma correta.
Levei muito tempo pesquisando e encontrei algumas soluções embora não tenha conseguido implementa-las .Interceptor e o Filter que muitos sugerem.
Alguém poderia me ajudar a implementar a classe OpenSessionInViewInterceptor oferecida pelo Spring?
Em meu Controller eu preciso recuperar um dado do banco e utiliza-lo em uma classe de negócio, e quando eu tento utiliza-lo acontece a exceção LazyInitializationException, pois eu já havia fechado a sessão no método de busca.
Alguém têm algum código como exemplo que já implementou essa solução ou algum link para eu ler e entender o funcionamento desse interceptor, sei que ele funciona através de aspecto e posso manipular um metodo para acontecer antes, depois ou quando o metodo foi concluido, mas eu não sei como vou criar o
ApplicationContext context = new ClassPathXmlApplicationContext("/config/spring-persistence.xml");
utilizando esse interceptor, muito menos como vou passar a session para minhas classes DAO utilizarem para realizar suas operações.
Uso Spring 3 e Hibernate 4.
edit:
Depois de uma incrível batalha de 1 dia tentando encontrar essa bendita solução, finalmente consegui.
Não pude utilizar a solução OpenSessionInViewFilter pois estou trabalhando com ajax, e li que esse filtro não funciona nesse cenário. Se alguém puder se pronunciar, trazendo o “porque” eu agradeceria.
A solução usando OpenSessionInViewInterceptor eu não consegui implementar, seria legal se alguém pudesse trazer isso implementado para auxiliar outras pessoas que também estão com dificuldade.
Solução efetiva:
Utilizar criteria, não sei se é a melhor solução, e se isso acarreta em mal desempenho, vou pesquisar mais a respeito, sugiro que quem for usar faça o mesmo.