2016-04-02 18 views
0

sınıf Ebeveyn düşünün:Hazırda bekletme neden çocuğun üst öğeyi referans olarak ayarlamıyor?

{ 
    ... 
    @OneToMany(cascade=CascadeType.ALL,mappedBy = "parent") 
    Set<Child> children; 
    ... 
} 

Ve sınıf Çocuk: O zaman uygulamanın içinde yeni bir çocuk yaratmak ve Veli çocukların içeride alanını koyun ve varsa

{ 
    ... 
    @ManyToOne 
    @JoinColumn(name="parentID") 
    Parent parent; 
    ... 
} 

inat Ana Nesne, neden Hazırda bekletme alt alanı otomatik olarak Çocuk nesnesinin üst alanını (parentID sütununu ayarlamak için) güncelleştirmiyor?

cevap

1

Hazırda bekletme sihir aracı değil. Tasarladığınız ve yazdığınız POJO'ları kullanmak için tasarlanmıştır ve bu POJO'ların bayt kodlarını değiştirmez. Gerekirse derneğin diğer tarafını başlatmak sizin sorumluluğunuzdur.

Bunun bir başka nedeni de, JPA şartnamelerinin, saygı duyması gereken, nasıl çalıştığını belirlemesidir.

Ama hiçbir şey bir yöntem Bu bayt kodunu değiştirmek olmazdı

public void addChild(Child c) { 
    this.children.add(c); 
    c.parent = this; 
} 
+0

sahip engeller. Ana nesne kaydedildiğinde, ** çocukların ** "doldurulduğu" ve bunun içeriğinin çocuğun içinden güncellenmesi için doğrulanamadı mı? – user42768

+0

Niyetin çocuğa ebeveyne eklenmesini sağlamak nasıl karar verirdi, çünkü her iki nesne de aynı şeyi söylemiyor mu? Ebeveyn diyor ki: Evet, bu benim çocuklarımdan biri. Çocuk şöyle diyor: hayır, hiç ebeveynim yok. Peki, kim hazırda beklemeli? Çocuk mu yoksa ebeveyn mi? Şartname karar verdi: çocuk olan dernek sahibine inanmalıdır. –

+0

Bu vakayı düşündüm ama derneğin “mantıksal” sahibine inanılmalıydım. Şimdi bu yaklaşımın ciddi sorunlara neden olabileceğini düşünüyorum. Teşekkür ederim! – user42768

İlgili konular