sql >> Databasteknik >  >> RDS >> PostgreSQL

vad är @JoinColumn och hur det används i Hibernate

En enkelriktad association via en kopplingstabell

@Entity
class Patient {

    @OneToMany
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

}

En dubbelriktad koppling via en kopplingstabell

@Entity
class Patient {

    @OneToMany
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    private Patient patient;

}

En enkelriktad koppling via en främmande nyckel

@Entity
class Patient {

    @OneToMany
    @JoinColumn
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

}

En dubbelriktad koppling via en främmande nyckel

@Entity
class Patient {

    @OneToMany(mappedBy = "patient")
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    private Patient patient;

}

En dubbelriktad association via en främmande nyckel med en utländsk kolumnnamnspecifikation

@Entity
class Patient {

    @OneToMany(mappedBy = "patient")
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="patient_id")
    private Patient patient;

}

Detta är den grundläggande utgångspunkten för att använda @JoinColumn .

För att verifiera att den främmande nyckeln (patient_id i Vehicle table) är verkligen mappad i patienttabellen som du kan använda @JoinColumn(nullable = false)

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="patient_id", nullable = false)
    private Patient patient

}


  1. Simple Encrypted Arithmetic Library (SEAL) och sigill::Ciphertext-variabeln

  2. SQL Server rekursiv fråga

  3. Oracle SQL Developer 21.4.2 och SQLcl 21.4.1 är nu tillgängliga

  4. MySQL SELECT inkrementräknare