Olá pessoal, tenho a seguinte situação:
Minha aplicação JSF + Hibernate precisa acessar vários databases do SQL Server. Até ai tudo bem, pois encontrei uma solução criando um arquivo *.cfg.xml para cada database. Ocorre que no pacote de classes corporativas, onde mantenho objetos de uso geral como Pessoa, Pessoa Física, Funcionários, Municípios, etc, tenho coleções mapeadas para objetos dependentes que estão em outro pacote e são carregadas em uma SessionFactory (database) diferente.
Minha implementação:
SessionFactory 1 <----> 1 Database
No meu HibernateUtil criei um Map<String, SessionFactory> e identifico a SessionFactory que mapeou a classe na inicialização do Hibernate.
Assim, o Hibernate encontra a SessionFactory (Database) corretamente e tudo bem !
Problema 1:
Preciso criar as anotações de coleções de objetos que estão em outro database (SessionFactory) e que ainda não foram mapeadas.
Quanto crio as anotações, o hibernate reclama que a classe dependente anotada não foi mapeada e não cria a SessionFactory.
Caso não seja anotada a coleção, o HibernateUtil resolve o nome do database (SessionFactory) e tudo funciona !
Problema 2:
Ao executar um HQL que utilize no join alguma tabela mapeada em outra Session o hibernate não executa porque naquela SessionFactory não existe o mapeamento para a classe que foi mapeada em outra SessionFactory (Database).
Gostaria da ajuda de vocês para implementar uma solução que permita:
1 - Criar todas as anotações nas classes, mesmo que a classe anotada esteja em uma SessionFactory (database) diferente;
2 - Executar de forma transparente os comandos HQL com join entre classes de SessionFactory (database) distintas;
O Hibernate permite esse tipo de implementação ? Como implementaria isso com o hibernate ?
Obrigado.