[quote=ffoliveira]Novamente no tópico…
Ajustei as classes e os mapeamentos para usar o fetch = FetchType.LAZY
porem o hibernate esta retornando uma exception,
failed to lazily initialize a collection of role
Do que se trata esta erro, e como faço para resolve-lo? [/quote]
Mas você não usou o setFetchMode desejado + DISTINCT_ROOT_ENTITY na sua consulta Criteria?
Exemplo:
c.setFetchMode("pessoa", FetchMode.JOIN);
c.setFetchMode("pessoa.fisica", FetchMode.JOIN);
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
Assim você controla quando quer fazer o join para gerar um único SQL sem precisar cravar isso no mapeamento (o que faria degradar perfomance quando precisar acessar só atributos simples).
Mas mesmo assim terá outros casos em que precisará acessar o atributo sob demanda e vai dar mesmo esse erro que mostrou, para não ocorrer uma das soluções é deixar a conexão (session) aberta durante todo o request, que é a solução que uso. Aqui você fica sabendo mais sobre isso: http://uaihebert.com/?p=1367&page=5