[Java lista] JPA Cascade törlés probléma
anhuman
anhuman at freemail.hu
2008. Okt. 24., P, 13:33:47 CEST
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 :)
További információk a(z) Javalist levelezőlistáról