Üye Girişi

Lütfen kullanıcı adınızı ve şifrenizi ilgili alanlara giriniz!

Üye değilseniz lütfen tıklayınız

Şifremi Unuttum

Şifrenizi unuttuysanız tıklayınız
favorite

Hibernate ManyToMany ve JoinColumns Annotasyonlarının Kullanımı

Problem sınıfı:

/**
 * User tablosu sabit oldugu icin cascade kullanilmadi. Veritabanina yeni bir Problem eklenince otomatik olarak
 * Problem_User tablosuna da bu veri eklenecektir. cascade kullansaydık aynı zamanda User tablosuna da var olan Tag'i
 * eklemeye calisacakti. Bu nedenle kullanilmadi
*/
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
    name = "Problem_User",
    joinColumns = @JoinColumn(name = "problemId",nullable = false, updatable = false),
    inverseJoinColumns = @JoinColumn(name = "userId", nullable = false, updatable = false)
)
private List<User> userList;

@JoinTable annotasyonu owned entity içerisinde kullanılır. Örnekteki owned entity Problem sınıfıdır. Bundan dolayı Problem entity ilişkiyi yönetir. Yeni bir Problem eklendiğinde otomatik olarak @JoinTable ile belirtilen Problem_User tablosu da güncellenir.

Eğer @ManyToMany annotasyonunda cascade=CascadeType.PERSIST şeklinde bir kullanım olsaydı, Problem eklendiğinde User tablosuna da yeni bir User entity eklenmeye çalışılırdı. Fakat bu uygulamada User tablosundaki veriler sabit olduğu için ve yeni kullanıcı eklemediğimiz için cascade kullanılmadı.

joinColumns property owned entity'yi temsil eder. Yani foreign key sütunlarını belirtiriz.

inverseJoinColumns ise ,inversed entity'i temsil eder.

User Sınıfı:

@ManyToMany(fetch = FetchType.LAZY,mappedBy = "userList")
private List<Problem> problemList;

mappedBy property owned olmayan entity içinde yani User entity içerisinde kullanılır. Çünkü mappedBy'ın aldığı değer owned entity içerisinde tanımlanan field'e referans eder.



PayPal - Online ödeme yapmanın daha güvenli ve kolay yolu!


Bu makale hakkında yapılan yorumlar

Henüz yorum yapılmadı.



Yorum Yaz

Adınız*
Soyadınız* 
Email* 
Konu* 
(12 + 5) Kaç Eder: