PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

o que é @JoinColumn e como é usado no Hibernate


Uma associação unidirecional por meio de uma tabela de junção
@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Uma associação bidirecional por meio de uma tabela de junção
@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Uma associação unidirecional por meio de uma chave estrangeira
@Entity
class Patient {

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

}

@Entity
class Vehicle {

}

Uma associação bidirecional por meio de uma chave estrangeira
@Entity
class Patient {

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

}

@Entity
class Vehicle {

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

}

Uma associação bidirecional por meio de uma chave estrangeira com uma especificação de nome de coluna estrangeira
@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;

}

Este é o ponto de partida básico do uso de @JoinColumn .

Para verificar se a chave estrangeira (patient_id no Vehicle table) está realmente mapeado na tabela de pacientes, você pode usar @JoinColumn(nullable = false)
@Entity
class Vehicle {

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

}