Fetch join não usa cache e produz queries pesadas

2 respostas
alanlohse

Estou tendo problemas em uma aplicação de grande porte.

Temos cache de segundo nível configurado, mas o JPA não usa o cache quando eu tenho vários relacionamentos ManyToOne, ele faz o fetch do tipo join e ignora o cache.

Por exemplo eu tenho uma entidade com várias associações do tipo ManyToOne para tabelas corporativas q raramente mudam e deveriam estar utilizando o cache.

Eu sei que a anotação @Fetch(FetchMode.SELECT) em cada campo resolveria o problema, mas o projeto é muito grande e são mais de 100 entidades para alterar.

Alguem aí sabe uma configuração que funcione pra todos de uma vez?

2 Respostas

Flavio_Almeida

Traga apenas PARTE da entidade via result transformer, deixando de lado os relacionamentos ManyToOne. Quando for alterar, pegue a referência da entidade.
Espero que ajude.

obs: achei estranho ele não considerar as entidades de seu cache.

D

A solução do alanlohse é boa.
Ia ficar ficar mais fácil ajudar se você postasse o código.

Criado 28 de abril de 2011
Ultima resposta 28 de abr. de 2011
Respostas 2
Participantes 3