Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Hibernate - Existe uma maneira de juntar 2 colunas contra 1?


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).