JPA @CascadeType ile ManyToOne.TÜM
Ben @ManyToOne ilişki bağlamında basamaklı anlamını anladım Bayan bence.
Dava:
public class User {
@OneToMany(fetch = FetchType.EAGER)
protected Set<Address> userAddresses;
}
public class Address {
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
protected User addressOwner;
}
Ne cascade anlamı = CascadeType.TÜM ? Nasıl olursa DB belirli bir adresi silmek örneğin, cascade = CascadeType ekledim aslında.TÜM etkiler verilerimi (sanırım kullanıcı)?
CEVAP
CascadeType.ALL
anlamını sebat ilişkin varlıklar (cascade) EntityManager
tüm işlemler (PERSIST, REMOVE, REFRESH, MERGE, DETACH
) yaymak.
Senin durumunda kötü bir fikir, Address
User
ilgili çıkarmadan götürecek bir çıkarma olarak görünüyor. Bir kullanıcı birden çok adresi olabilir gibi, diğer adresler yetimler olacak. Ancak tersi durumda (notlar User
) mantıklı - eğer bir adrese ait olduğu için bir tek kullanıcı sadece, güvenli yaymak kaldırılması tüm adreslerine ait bir kullanıcı varsa bu kullanıcı silinmiş.
BTW: mappedBy="addressOwner"
niteliği User
birleştirme sütunu ADRESİ tabloda olması gereken süreklilik sağlayıcı sinyal eklemek isteyebilirsiniz.
JPA CascadeType.TÜM yetimler silmez...
CascadeType şeyi yapar.Aslında YENİLEM...
@Column(s) @yapılamaz ManyToOne özelli...
Çift yönlü JPA bir OneToMany/tarafında...