PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was ist @JoinColumn und wie wird es in Hibernate verwendet?

Eine unidirektionale Zuordnung über eine Join-Tabelle

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Eine bidirektionale Assoziation über eine Join-Tabelle

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Eine unidirektionale Zuordnung über einen Fremdschlüssel

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Eine bidirektionale Zuordnung über einen Fremdschlüssel

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Eine bidirektionale Assoziation über einen Fremdschlüssel mit einer fremden Spaltennamensspezifikation

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

}

Dies ist der grundlegende Ausgangspunkt für die Verwendung von @JoinColumn .

Um zu überprüfen, ob der Fremdschlüssel (patient_id im Vehicle table) wirklich in der Patiententabelle abgebildet ist, können Sie @JoinColumn(nullable = false) verwenden

@Entity
class Vehicle {

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

}