Há como fugir d Lazy-Loading do Hibernate?

Tenho dois EM na aplicação, e quero pegar uma entidade de um e persistir no outro, só que dessa forma o hibernate não traz os objetos dependentes do objeto principal e então se eu persistir na outra base ele só persiste o objeto raíz.

Entidade A
Entidade B

A contêm vários B. Porém ao carregar A quero já automaticamente gravar seus dependentes em outro EM.

Têm como fugir do lazy nesse aspecto? Forçar o hibernate a carregar automaticamente todos os objetos dependentes e persistir tudo?

Se não me engano você pode fazer a anotação para EAGER no método também.

tem sim… no mapeamento vc coloca

lazy=“false”

acho que é isso…

Use EAGER com cuidado :wink:

Isso mesmo pessoal, usando o fetch para EAGER.

Agora tenho que ver depois como ficará a performance, já que são duas bases de dados.

Em vez de fazer direto na configuração, que vai fazer com que isso sirva pra todo mundo, faça isso em uma query separada só pra esse lugar que você vai usar, assim você não fica carregando sempre apenas quando necessário.

Usando NamedQuery por exemplo?

Exatamente :slight_smile:

mais precisamente, usando um eager fetch na query. falei sobre isso a poucos dias:
http://blog.caelum.com.br/2008/01/28/os-7-habitos-dos-desenvolvedores-hibernate-e-jpa-altamente-eficazes/

Obrigado a todos, darei uma olhada aqui!

Opa pessoa tudo blz? Dando um up aqui nessa thread pois estou com esse mesmo problema e tentei fazer com que carregasse o OneToMany pela NamedNativeQuery colocando no Select as duas tabelas que necessito que sejam carregadas só que mesmo assim não está carregando-a

@NamedNativeQuery(name="query", query="select tab1.*, tab2.* from tab1 inner join tab 2 on tab1.tab2Id = tab2.id", resultClass=Tab1.Class)

/* ... Atributo da tab2 */
@OneToMany(mappedBy = "tab2Id", fetch=FetchType.LAZY)
private List<Tab2> tab2Id;

a tab1 possui n tab2 (OneToMany) e é lazy pois carrego a tab1 em outros pontos da aplicação e não posso carregar também a tab2 pois deixará lento d+.

Estou fazendo da maneira correta? Não está funcionando e dá LazyInitializationException pois estou consumindo o EJB remoto utilizando XStream logo não tem como atualizar pelo “lazy loading”.

Vlw