JPA "@JoinTable" açıklama
Bu durumda JPA kullanın @JoinTable açıklama mı?
CEVAP
Hadi bir varlık Project
ve başka bir varlık Task
adında var ve her proje birçok görev olabilir gibi.
İki şekilde bu senaryo için veritabanı şema tasarımı.
İlk çözüm bir masa Project
ve başka bir tablo Task
isimli oluşturmak ve görev tablosu project_id
adında bir yabancı anahtar sütun eklemek için:
Project Task
------- ----
id id
name name
project_id
Bu şekilde, görev tablodaki her satır için proje belirlemek mümkün olacaktır. Eğer bu yaklaşımı kullanırsanız, varlık sınıfları bir masaya ihtiyacın olmayacak:
@Entity
public class Project {
@OneToMany(mappedBy = "project")
private Collection<Task> tasks;
}
@Entity
public class Task {
@ManyToOne
private Project project;
}
Diğer çözüm, üçüncü bir tablo kullanmak, Project_Tasks
örneğin, projeler ve tablo: görevler arasındaki ilişki saklayın
Project Task Project_Tasks
------- ---- -------------
id id project_id
name name task_id
Project_Tasks
tablo denir "Masa" Katıl. Harita için bu ikinci çözüm JPA, @JoinTable
ek açıklama kullanmanız gerekir:
@Entity
public class Project {
@Id
private Long id;
@OneToMany(mappedBy = "project")
@JoinTable(
name = "Project_Tasks",
joinColumns = @JoinColumn(name = "project_id"),
inverseJoinColumns = @JoinColumn(name = "task_id")
)
private Collection<Task> tasks;
}
@Entity
public class Task {
@Id
private Long id;
@ManyToOne
private Project project;
}
Eğer çok-çok ilişkisi için bir şema oluşturmak istiyorsanız son olarak, kullanarak bir tablo mevcut tek çözümdür katıl.
Eclipse "Geçersiz Proje yeni proj...
Nasıl Bluebird'ler açıklama yapar...
AngularJs "denetleyicisi" sö...
Java bir karşılığı yoktur.açıklama.içi...
Adını&;--> quot;" operatör?...