Olá,
Meu problema: a classe que controla meu webform chama o webservice para materializar um objeto que possui collections e mapeamentos 1-1, quando o webservice retorna o objeto para minha classe de controle do webform e eu tento acessar uma collection no objeto recebo a infame org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: SisUsuario.unidades, no session or session was closed
Não quero desabilitar o lazy loading para evitar perda de performance em outras partes do aplicativo que usam a mesma classe que é buscada no banco. Devido como a API de acesso ao banco foi feita, fica dificil achar uma solução que se encaixa na idéia da API. O método em questão é:
public boolean find(EntityObject entityObj){
boolean achou = false;
Session session = openSession(entityObj);
Transaction transaction = startTrans(session);
try {
EntityId id = new EntityId(entityObj);
session.load(entityObj,id.getKey());
commit(transaction);
achou = true;
} catch (Exception ex) {
//System.out.println(ex.getMessage());
ex.printStackTrace();
rollback(transaction);
}
return achou;
}
Passo o objeto com as PKs preenchidas para ser recuperado na base. Tentei session.evict(), mas o problema persiste. Alguem tem alguma ideia de como desabilitar o lazy loading neste caso? Algum método que posso chamar antes do session.load()?
Agradeço previamente qualquer ajuda,
Sérgio