Boa noite pessoal, tenho o steguinte cenário:
1. public class Categoria {
2.
3. private Integer idCategoria;
4.
5. @OneToOne(mappedBy="categoria", fetch=FetchType.LAZY)
6. private DadoCategoria dadoCategoria;
7.
8. @OneToMany(mappedBy="categoria", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
9. private List<DadoCategoria> dadosCategoria;
10.
11. ....
12. }
13.
14. public class DadoCategoria {
15.
16. private Integer idDadoCategoria;
17.
18. @ManyToOne(fetch=FetchType.LAZY, optional=false)
19. private Categoria categoria;
20.
21. @ManyToOne(fetch=FetchType.LAZY, optional=false)
22. private Localizacao localizacao;
23.
24. ...
25. }
26.
27. public class Localizacao implements Serializable {
28.
29. private Integer idLocalizacao;
30.
31. ....
32. }
Um categoria pode ter várias localizações, mas em 100% das vezes ela é exibida somente em uma localização.
Então eu tenho a lista de dados da categoria em vários idiomas mas seleciono apenas uma para exibir (por isso o OneToOne).
Se considerar somente o relacionamento OneToMany terei que inicializar toda vez a coleção, o que nao e muito viável.
Utilizando o relacionamento OneToOne somente consigo carregar corretamento utilizando criteria, fora isso o hibernate diz que há mais de um mesmo id para um dado da categoria para uma relação um-para-um.
Acontece que eu nao posso utilizar lazy de forma alguma, pois o hibernate sempre carrega adiantado relacionamentos oneToOne, e ao carregar o erro é lançado…
Alguem teve algum problema parecido?