sql >> Database teknologi >  >> RDS >> Mysql

Hibernate - Er der en måde at forbinde 2 kolonner mod 1?

Løsning 1

Opret en databasevisning på Table1 som afslører udenlandsk nøgle, der henviser til Table2 . Projicér fremmednøglen fra din postede forespørgsel, som du alligevel vil bruge til visningen. Tilknyt derefter din enhed til visningen.

Løsning 2

Brug deltagelsesformlen :

For eksempel i den enhed, der er knyttet til Table1 definere mange-til-en-tilknytningen med den enhed, der er knyttet til Table2 (synes at være din use case):

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

Tilmeldingsformler ser dog ud til at være meget skrøbelige i Hibernate for tiden (det lykkedes mig at få dette til kun at fungere for mange-til-en-forbindelse, og jeg var nødt til at lave Entity2 implementer Serializable; ellers virkede det ikke og kastede nogle mærkelige NullPointer- og ClassCastException s).



  1. Sådan forespørges soundex() i mysql

  2. Mysql:Indstil formatet DATETIME til 'DD-MM-YYYY TT:MM:SS', når du opretter en tabel

  3. Mysql eller/og forrang?

  4. Hvordan trækker man data fra mysql-databasen og visualiserer med D3.JS?