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(example@sqldat.com(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).