Blz galera,
Gostaria de compartilhar uma solução, não sei se é a melhor maneira de se fazer isso, mas deu certo no meu cenário.
Estou desenvolvendo um projeto JSF 2.0, PrimeFaces, Hibernate, etc… O hibernate está gerenciando 2 conexões a diferentes bancos, ou seja meu projeto possui 2 hibernate.cfg.xml (com diferentes nomes claro). Me deparei com uma necessidade a qual precisava de informações de uma tabela existente em um dos banco para o outra tabela do outro banco banco, porém não necessito de persistir um dos bancos, será utilizado apenas como fonte de consultas.
Para melhor entendimento podemos nomear:
Banco A (EXTERNO)
Banco B (INTERNO)

As informações que necessito sairá de uma tabela do BANCO A (Externo) para serem persistidas em uma tabela do BANCO B (interno) e pelo motivo de estarem em bancos separados, Session separadas não encontrei meio de relacioná-las, e para não replicar as informações, decidi enviar apenas os códigos para minha tabela do BANCO B.
E como podem ver na imagem acima a tabela do BANCO B está relacionada um para muitos, uma regra terá muitos procedimentos.
Como fazer isso sem criar uma classe (VO, @Entity) para persistir a tabela regra_procedimento já que irei apenas adicionar códigos (Integer) na tabela?
Pois bem a saida foi assim:
Na entidade regra:
@Entity
@Table(name="regra")
public class Regra implements Serializable{
private Integer cod_regra;
private Set<Integer> cod_procedimento;
@ElementCollection(targetClass = java.lang.Integer.class)
@JoinTable(name="regra_procedimento", joinColumns=@JoinColumn(name="cod_regra"))
@IndexColumn(name="cod_procedimento")
@Column(name="cod_procedimento")
public Set<Integer> getCod_procedimento() {
return cod_procedimento;
}
//getters, setters ...
}
Com as annotations acima, é possível relacionar os códigos a uma tabela (@JoinTable) onde a tabela possuirá uma chave composta (cod_regra: tabela do banco interno, cod_procedimento: tabela do banco externo), fazendo o relacionamento um para muitos sem necessidade de criar uma classe mapeanda com @Entity para relacionar a outra tabela.
Uma desvantagem em utilizar essa abordagem é que não consigo realizar o Lazy da consulta, mas devido a quantidade de dados, para meu projeto isso não será preocupante.
Tentei ser o mais claro possível dando uma solução que funciou, talvez nao seja a melhor maneira de se desenvolver.
Dúvidas estou a disposição.
Abraço,
Edu