Solução 1
Crie uma exibição de banco de dados na
Table1
que expõe a referência de chave estrangeira Table2
. Projete a chave estrangeira de sua consulta postada que você usará para a visualização de qualquer maneira. Em seguida, mapeie sua entidade para a visualização. Solução 2
Use a fórmula de associação :
Por exemplo, na entidade mapeada para
Table1
definir a associação muitos-para-um com a entidade mapeada para Table2
(parece ser o seu caso de uso):@ManyToOne
@JoinColumnsOrFormulas({
@JoinColumnOrFormula([email protected](value="(SELECT t2.serial FROM Table2 t2 WHERE serial1 = t2.serial OR serial2 = t2.serial)", referencedColumnName="serial"))
})
private Entity2 entity2;
No entanto, as fórmulas de junção parecem ser muito frágeis no Hibernate por enquanto (consegui fazer isso funcionar apenas para associação de muitos para um e tive que fazer
Entity2
implementar Serializable
; caso contrário, não funcionou e lançou alguns NullPointer-
estranhos e ClassCastException
s).