PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

cos'è @JoinColumn e come viene utilizzato in Hibernate

Un'associazione unidirezionale tramite una tabella di unione

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Un'associazione bidirezionale tramite una tabella di unione

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Un'associazione unidirezionale tramite una chiave esterna

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Un'associazione bidirezionale tramite una chiave esterna

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Un'associazione bidirezionale tramite una chiave esterna con una specifica del nome di colonna esterna

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

}

Questo è il punto di partenza di base dell'utilizzo di @JoinColumn .

Per verificare che la chiave esterna(patient_id nel Vehicle table) è realmente mappato nella tabella dei pazienti, puoi usare @JoinColumn(nullable = false)

@Entity
class Vehicle {

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

}