[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