PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

qu'est-ce que @JoinColumn et comment il est utilisé dans Hibernate

Une association unidirectionnelle via une table de jointure

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Une association bidirectionnelle via une table de jointure

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Une association unidirectionnelle via une clé étrangère

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Une association bidirectionnelle via une clé étrangère

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Une association bidirectionnelle via une clé étrangère avec une spécification de nom de colonne étrangère

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

}

C'est le point de départ de base de l'utilisation de @JoinColumn .

Pour vérifier que la clé étrangère (patient_id dans le Vehicle table) est vraiment mappé dans la table des patients, vous pouvez utiliser @JoinColumn(nullable = false)

@Entity
class Vehicle {

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

}