SORU
29 Mart 2011, Salı


JPA "@JoinTable" açıklama

Bu durumda JPA kullanın @JoinTable açıklama mı?

CEVAP
30 Mart 2011, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • HER0R

    HER0R

    16 Aralık 2007
  • WK

    WK

    9 Ocak 2006