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
}