sql >> Database >  >> RDS >> Mysql

Slaapstand - Is er een manier om 2 kolommen samen te voegen met 1?

Oplossing 1

Maak een databaseweergave op de Table1 die refereert naar een refererende sleutel die verwijst naar Table2 . Projecteer de externe sleutel van uw geposte query die u toch voor de weergave zult gebruiken. Wijs vervolgens uw entiteit toe aan de weergave.

Oplossing 2

Gebruik join-formule :

Bijvoorbeeld in de entiteit die is toegewezen aan Table1 definieer de veel-op-een associatie met de entiteit die is toegewezen aan Table2 (lijkt jouw gebruiksscenario te zijn):

@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;

Echter, join-formules lijken voorlopig erg kwetsbaar in Hibernate (ik slaagde erin om dit alleen te laten werken voor veel-op-een associaties en ik moest Entity2 maken implementeer Serializable; anders werkte het niet en gooide een vreemde NullPointer- en ClassCastException s).



  1. Haal de maandnaam uit een datum in PostgreSQL

  2. Programmatisch een tabel maken met MyBatis en MySql

  3. ALTER TABLE-fout

  4. ORACLE 11g standaard ongevoelig voor hoofdletters