SORU
6 Ocak 2010, ÇARŞAMBA


JPA OneToMany silme çocuk değil

basit @üst ve alt varlık arasında OneToMany eşleme ile bir sorunum var. Tüm alt kayıtlar ben koleksiyonundan onları kaldırdığınızda silinmez sadece iyi çalışır.

Üst:

@Entity
public class Parent {
    @Id
    @Column(name = "ID")
    private Long id;

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

 ...
}

Çocuk:

@Entity
public class Child {
    @Id
    @Column(name = "ID")
    private Long id;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="PARENTID", nullable = false)
    private Parent parent;

  ...
}

Ben childs kümesinden silmek ve çocuk şimdi ise, veritabanından silinmiş almaz. Çocuk bozarak çalıştım.üst referans, ama o da işe yaramadı.

Varlıkları bir web uygulaması kullanılır, sil ajax isteği bir parçası olarak gerçekleşir. Onlara örtülü olarak silemiyorum yani Kaydet düğmesine basıldığında childs silinmiş, bir liste yok.

Herhangi bir işaret var mı? Zaman ayırdığınız için şimdiden teşekkür ederiz

CEVAP
6 Ocak 2010, ÇARŞAMBA


JPA davranışlarını doğru (anlamşartname başına): nesneler sadece OneToMany koleksiyonundan onları kaldırdık çünkü silinmez. -Özel satıcı bunun uzantıları var ama yerli JPA bunun için hitap etmiyor.

Bu aslında bir şey koleksiyonundan kaldırıldı silmesi gerektiğini biliyor JPA yok çünkü. Nesne modelleme açısından, bu arasındaki farktırkompozisyonve "toplama*.

kompozisyonalt taraf üst olmadan varlığı yoktur. Klasik bir örnek Ev ve Oda arasında. Ev ve Oda da silin.

Toplamadernek gevşek bir tür ve Ders ve Öğrenci yetiştirmektir. Sil Ders ve Öğrenci hala var (muhtemelen diğer Dersler).

Satıcıya özgü uzantıları bu davranış (varsa) güç ya da açıkça çocuğun silmek için kullanın VE ebeveynin koleksiyon çıkarmak da gerekir.

Farkındayım:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • inovationgmbh

    inovationgmb

    28 EYLÜL 2010
  • The Exploiteers

    The Exploite

    4 Ocak 2011
  • Xbox

    Xbox

    1 Kasım 2005