Olá pessoal,
Estou com um problema na minha aplicação. Quando faço determinadas consultas no banco, ocorre o seguinte erro:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.gov.xxx.myproject.domain.entity.Usuario.listaDeFilhos, no session or session was closed
Meu DAO está na seguinte forma:
public boolean verificaSeUsuarioEhGemeo(Usuario usuario, Usuario usuarioBase){
if(usuario != null || usuarioBase != null){
QueryParameter prUsuario = null;
QueryParameter prUsuarioBase = null;
StringBuilder hql = new StringBuilder();
hql.append("FROM Gemeo " +
"WHERE ");
if(usuario != null) hql.append("gemeo1.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo1.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo2.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo2.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo3.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo3.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo4.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo4.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo5.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo5.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo6.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo6.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo7.id = :usuario OR ");
if(usuarioBase != null)hql.append("gemeo7.id = :usuarioBase OR ");
if(usuario != null) hql.append("gemeo8.id = :usuario ");
if(usuarioBase != null)hql.append(" OR gemeo8.id = :usuarioBase");
if(usuario != null){
prUsuario = QueryParameter.create();
prUsuario.asName("usuario");
prUsuario.withValue(usuario.getId());
prUsuario.fromType(new LongType());
}
if(usuarioBase != null){
prUsuarioBase = QueryParameter.create();
prUsuarioBase.asName("usuarioBase");
prUsuarioBase.withValue(usuarioBase.getId());
prUsuarioBase.fromType(new LongType());
}
System.out.println("HQL do metodo verificaSeUsuarioEhGemeo: " + hql.toString());
List<Gemeo> listaHql = this.executeHQL(hql.toString(), prUsuario, prUsuarioBase);
if(listaHql.size() == 1) return true;
else return false;
}
return false;
}
Minha pergunta é: eu devo fazer algum tratamento dentro deste método que eu não estou fazendo? Algo como controlar seção?
Obrigado.