sql >> Databáze >  >> RDS >> PostgreSQL

co je @JoinColumn a jak se používá v Hibernate

Jednosměrné přidružení prostřednictvím spojovací tabulky

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Obousměrné přidružení prostřednictvím spojovací tabulky

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Jednosměrné přidružení prostřednictvím cizího klíče

@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Obousměrné přidružení prostřednictvím cizího klíče

@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Obousměrné přidružení prostřednictvím cizího klíče se specifikací cizího názvu sloupce

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

}

Toto je základní výchozí bod použití @JoinColumn .

Chcete-li ověřit, že cizí klíč (patient_id v Vehicle tabulka) je skutečně namapována v tabulce pacientů, můžete použít @JoinColumn(nullable = false)

@Entity
class Vehicle {

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

}


  1. Smazat všechny duplicitní řádky kromě jednoho v MySQL?

  2. Unikátní modelové pole v Django a rozlišování velkých a malých písmen (postgres)

  3. Vybrat dotaz mysql mezi datem?

  4. Import CSV do MySQL s jiným formátem data