Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Derby DB i klucze obce

20 views
Skip to first unread message

KirkoR

unread,
Dec 30, 2009, 6:06:28 PM12/30/09
to
Witam, mam taki problem:
Tworzę sobie dwie tabele, następnie chcę je połączyć kluczami obcymi
ale w ten sposób aby usunięcie rekordu, który posiada referencję w
innej tabeli było nie możliwe. Nie mogę tego efektu uzyskać :(
Oto czego używałem:

ALTER TABLE "BERIKOSUR".BS_USER_TASKS ADD FOREIGN KEY(BS_TASK_ID)
REFERENCES BS_TASKS(ID) ON DELETE NO ACTION;

Czy powinienem ustawić coś jeszcze w Entity Class? Czy może za mało
definiuję?

KirkoR

unread,
Dec 30, 2009, 6:29:54 PM12/30/09
to

Kurcze blade! Okazało się, że wyrażenie:

ALTER TABLE "BERIKOSUR".BS_USER_TASKS ADD CONSTRAINT FK_TASK_ID


FOREIGN KEY(BS_TASK_ID) REFERENCES BS_TASKS(ID) ON DELETE NO ACTION;

jest OK, to TopLink od Oracla usuwa wszystkie powiązane rekordy!
Jak można to ominąć? Trzeba coś ustawić w konfiguracji?

MZ

unread,
Dec 31, 2009, 5:09:06 AM12/31/09
to
KirkoR pisze:
> Kurcze blade! Okaza�o si�, �e wyra�enie:

>
> ALTER TABLE "BERIKOSUR".BS_USER_TASKS ADD CONSTRAINT FK_TASK_ID
> FOREIGN KEY(BS_TASK_ID) REFERENCES BS_TASKS(ID) ON DELETE NO ACTION;
>
> jest OK, to TopLink od Oracla usuwa wszystkie powi�zane rekordy!
> Jak mo�na to omin��? Trzeba co� ustawi� w konfiguracji?

Kurcze blade, zmieďż˝ mapowanie.

--
Pozdrawiam
Mateusz
http://na-jawie.blogspot.com

kamiseq

unread,
Jan 2, 2010, 12:35:54 PM1/2/10
to
klucz obcy gwarantuje ci blad jesli usuwasz rekord ale do niego wciaz
cos sie odwoluje. jesli zaczniesz usuwac rekordy w odpowiedniej
kolejnosci baza danych nie zglosi ci zadnego wyjatku. w tym nie ma
zadnej magi. klucze obce sa po to aby wskazywac referencje miedzy
rekordami ale te rekordy musza istniec. tak wiec innymi slowy jesli
usuniesz wszystkie rekordy podrzedne a potem rekord nadrzedny to
wszystko bedzie ok

KirkoR

unread,
Jan 3, 2010, 11:04:13 AM1/3/10
to

Może się, źle wyraziłem. Właśnie problem polega na tym, że ja chciałem
aby wywalał się błąd ale TopLink oraclowy sam sobie wszystko usuwa z
automatu. Jak wyłączyć to zachowanie?

Bo jeżeli na tej samej tabeli wydam polecenie normalnie z poziomu
konsoli i wpiszę zapytanie SQL z usunięciem danych to wtedy wylatuje
błąd, a jak zrobię to samo za pomocą EntityManager to TopLink usuwa
wszystkie dane połączone kluczami obcymi.

Dziwne pytanie, ale jak sprawić aby wyrzucał wyjątek ;-)

kamiseq

unread,
Jan 3, 2010, 11:36:45 AM1/3/10
to
najprawdopodniej usun cascade.all
zobacz sobie na generowane zapytania do bazy i zoabczysz po kolei co
jest wywolywane i najprawdobniej toplink najpier usuwa rekordy
podrzedne a potem nadrzedny

KirkoR

unread,
Jan 3, 2010, 12:29:53 PM1/3/10
to

Jak to mogę zrobić? Tzn, aby pokazywać wywoływane zapytania?

Tomek Nurkiewicz

unread,
Jan 3, 2010, 12:41:52 PM1/3/10
to
>> zobacz sobie na generowane zapytania do bazy i zoabczysz po kolei co
>> jest wywolywane i najprawdobniej toplink najpier usuwa rekordy
>> podrzedne a potem nadrzedny
> Jak to mog� zrobi�? Tzn, aby pokazywa� wywo�ywane zapytania?

W Log4j (preferowa�bym):

<logger name="org.hibernate.SQL">
<level value="all"/>
</logger>

lub:

hibernate.show_sql=true

BTW: Google nie gryzie...


pozdrowienia

--
Tomek Nurkiewicz
http://nurkiewicz.blogspot.com

KirkoR

unread,
Jan 3, 2010, 12:52:31 PM1/3/10
to
On 3 Sty, 18:41, Tomek Nurkiewicz <nurkiewicz.wytni...@gmail.com>
wrote:

> >> zobacz sobie na generowane zapytania do bazy i zoabczysz po kolei co
> >> jest wywolywane i najprawdobniej toplink najpier usuwa rekordy
> >> podrzedne a potem nadrzedny
> > Jak to mogę zrobić? Tzn, aby pokazywać wywoływane zapytania?
>
> W Log4j (preferowałbym):

>
> <logger name="org.hibernate.SQL">
>    <level value="all"/>
> </logger>
>
> lub:
>
> hibernate.show_sql=true
>
> BTW: Google nie gryzie...
>
> pozdrowienia
>
> --
> Tomek Nurkiewiczhttp://nurkiewicz.blogspot.com

Już sobie poradziłem wcześniej, źle zrobiłem bo najpierw napisałem a
później poszukałem. Powiem tylko, że nie używam Hibernate a
TopLinka :P

Usunąłem wszystkie annotacje cascade i działa ;-)

Tomek Nurkiewicz

unread,
Jan 3, 2010, 3:02:09 PM1/3/10
to
>> BTW: Google nie gryzie...
> Powiem tylko, �e nie u�ywam Hibernate a
> TopLinka :P

Ach, przepraszam, widaďż˝ czytanie ze zrozumieniem teďż˝ nie gryzie :-).

0 new messages