[Java lista] JPA Cascade törlés probléma

Kristof Jozsa kristof.jozsa at gmail.com
2008. Okt. 27., H, 09:59:05 CET


@OneToMany( mappedBy="a_ref", fetch=FetchType.EAGER ,
cascade=CascadeType.ALL )
private Set<B> b_set;

a mappedBy property miatt a Set feloli oldal az inverz oldala a
relacionak, ergo a tuloldalt tortent valtozasok alapjan fog updatelni
a JPA provider.

A tiszta megoldas az A osztaly B-setjenek kozvetlen turkalasa helyett
az A osztalyban egy removeB() (es addB()) jellegu metodus bevezetese
ami mindket iranybol megtepi illetve epiti a relaciot, igy egyreszt
nem lesz inkonzisztens az objektummodelled, masreszt mindegy lesz
melyik az inverz oldala a mappelesnek.

K


2008/10/24 anhuman <anhuman at freemail.hu>:
> Sziasztok,
>
> Van egy kis gondom egy többszintű Entity kapcsolat kaszkád törlésével.
> JPA-nak Hibernat-et használok. Szigoruan a JPA annotationokan használok,
> nincs semmi provider függő.
>
> Nevezetesen a köv. szerkezettel van gondom:
> A---->*B----->*C
>
> ahol az A tartalmazza B-t osztály:
>
> @OneToMany( mappedBy="a_ref", fetch=FetchType.EAGER ,
> cascade=CascadeType.ALL )
> private Set<B> b_set;
>
> ------------------
> B osztály tartalmazza C-t
>
> @ManyToOne
> @JoinColumn( name="A_ID" )
> public A a_ref;
>
> @OneToMany(mappedBy="b_ref", fetch=FetchType.EAGER ,
> cascade=CascadeType.ALL )
> private Set<C> c_set;
>
> ------------------
> C osztály
>
> @ManyToOne
> @JoinColumn( name="B_ID" )
> public B b_ref;
>
> Amennyiben a B vagy a C Set-ből törlők egy elemet (magyarul tölök egy B
> vagy C-t )  majd az A-ra mondok egy merge-öt nem történik semmi.
>
> Minden osztályon rajta van a CASCADE.ALL szóval elvileg minden paraméter
> megadásra került.
> vagyis a ClassB-n és a ClassC-n is van CASCADE, illetve mindegyik EAGER
> fetch-elésű (bár ennek nincs jelentősége).
>
> A persist tökéletesen megfut. A módosítással sincsen gond attribútum
> szinten. Azonban ha az a_set-ből vagy a_set-ből törlők egy elemet azt
> nem veszi, és nem törli a DB-be.
> Semmiféle hibát nem dob, egyszerűen nem történik törlés. Nem tudom, hogy
> most merre kutakodjak, mivel elvileg minden úgy van megadva mint a
> nagykönyvben ...
>
> Segítségteket előre is köszönöm ...és mielőbb várom :)
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>


További információk a(z) Javalist levelezőlistáról