Boa noite pessoal,
Roger, estou com o mesmo problema.
Uma das soluções que encontrei mas não tive tempo de testar é utilizando o OpenSessionView.
Vou fazer uns testes e posso postar, o resultado.
Mas o meu problema, também é como Many to Many.
Abraços
Marcus Paulo
Enviado via iPhone
On 07/04/2012, at 17:42, Roger Rayner Cunha Bento <roger.rayner@totvs.com.br> wrote:
> Boa tarde,
>
> Estou com um problema que não estou conseguindo resolver. Já pesquisei na web e não consegui encontrar uma solução. Espero que alguém já tenha passado por isso e possa me ajudar.
>
> Tenho duas classes com relacionamento @ManyToMany (definções abaixo).
>
> User
> @ManyToMany(mappedBy="userList", fetch=FetchType.LAZY)
> private Set<UserGroup> userGroupList = new HashSet<UserGroup>();
>
> UserGroup
> @ManyToMany(fetch=FetchType.LAZY, cascade= {CascadeType.DETACH, CascadeType.PERSIST, CascadeType.MERGE})
> @JoinTable(name="USER_GROUP_RELAC",
> joinColumns={@JoinColumn(name="OID_USER_GROUP")},
> inverseJoinColumns={@JoinColumn(name="OID_USER")})
> private Set<User> userList = new HashSet<User>();
>
> Como podem ver ambas as listas eu coloquei como fetch=FetchType.LAZY pois não quero sobrecarregar a aplicação. Quando vou buscar o meu usuário pelo id (que só irá retornar 1 registro) uso a EJB QL abaixo:
>
> @NamedQuery(name="UserById",
> query="FROM User u LEFT JOIN FETCH u.emailList " +
> "LEFT JOIN FETCH u.userGroupList " +
> "where u.user_id like :user_id"),
>
> Mesmo utilizando o LEFT JOIN FETCH é retornado o erro abaixo e não sei mais oq fazer.
>
> failed to lazily initialize a collection of role: content.UserGroup.userList, no session or session was closed
>
> O LEFT JOIN FETCH não deveria carregar minhas coleções? Para evitar o erro da sessão já estar fechada? Alguem sabe como me ajudar?
>
> Fico no aguardo.
>
> Obrigado.
>
>
[As partes desta mensagem que não continham texto foram removidas]
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br







0 comentários:
Postar um comentário