Solución 1
Cree una vista de base de datos en la Table1
que expone la referencia de clave externa Table2
. Proyecte la clave externa de su consulta publicada que utilizará para la vista de todos modos. Luego asigne su entidad a la vista.
Solución 2
Use fórmula de unión :
Por ejemplo, en la entidad asignada a Table1
definir la asociación de muchos a uno con la entidad asignada a Table2
(parece ser su 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;
Sin embargo, las fórmulas de unión parecen ser muy frágiles en Hibernate por el momento (logré hacer que esto funcionara solo para asociaciones de muchos a uno y tuve que hacer Entity2
implementar Serializable
; de lo contrario, no funcionó y arrojó un extraño NullPointer-
y ClassCastException
s).