-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 10 posts ] 
Author Message
 Post subject: One-To-One "Aggregation"
PostPosted: Wed Feb 08, 2012 6:32 pm 
Newbie

Joined: Wed Feb 08, 2012 6:04 pm
Posts: 5
Guten Abend,

ich arbeite zurzeit an einem kleinen Projekt in dem Hibernate zum Einsatz kommt, was das Thema Hibernate anbelangt habe ich jedoch recht wenige Erfahrungen dennoch lief es bis zum heutigen Tag recht gut.

nun zu meinem Problem:

es geht um eine simple One-To-One Beziehung, ist es möglich diese so zu modeliieren,
dass beim Löschen der Parent-Entität die Child-Entität >nicht< mit gelöscht wird sondern weiterhin bestehen bleibt.

Als Beispiel:

Gehen wir davon aus, dass zu jedem User Bankdaten hinterlegt sind

wird der User gelöscht so sollen die Bankdaten dennoch bestehen bleiben

in meinem Fall werden die Bankdaten nämlich automatisch mitgelöscht

lässt sich dieses Verhalten mithilfe von Annotations steuern?
was für Lösungen gibt es für dieses Problem?


Liebe Grüße
WOOZY

und vielen Dank!


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 6:00 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Hallo,

normalerweise werden die Kindobjekte nur dann automatisch mitgeloescht wenn die entsprechende Relation mit

@OneToOne(cascade = CascadeType.REMOVE)

oder

@OneToOne(cascade = CascadeType.ALL)

annotiert ist.

Ist es bei Dir nicht so?


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 6:21 am 
Newbie

Joined: Wed Feb 08, 2012 6:04 pm
Posts: 5
Hallo, zunächst einmal Danke für die schnelle Antwort!

und noch ein paar Infos:
  • ich nutze eine MySQL Datenbank
  • in dieser Datenbank befinden sich die zwei Tabellen User und Bankdaten. Die Usertabelle hat ein int Feld
    in dem die Bankdatenid gespeichert wird.
  • Innerhalb der User Klasse über dem getter für die BankDaten habe ich folgende Annotation
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "BANKDATEN")

Bei den CascadeTypes hab ich eigentlich alle durchprobiert...

könnte es daran liegen, dass ich das Enum CascadeType aus javax.persistence importiert habe?
es gibt nämlich 3 Import Möglichkeiten.

unteranderem auch org.hibernate.annotations


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 6:31 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Wie gesagt, wenn Du das automatische Loeschen des Kindobjekts nicht haben willst,
darfst Du nicht

@OneToOne(cascade = CascadeType.ALL)

verwenden, denn CascadeType.ALL beinhaltet CascadeType.REMOVE,
klar?


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 6:40 am 
Newbie

Joined: Wed Feb 08, 2012 6:04 pm
Posts: 5
Ja das habe ich verstanden jedoch ändert es nichts an dem Problem ist mein Import den richtig?
also der CascadeType aus javax.persistence?

    @OneToOne
    @JoinColumn(name = "BANKDATEN")
    public BankDaten getBankDaten() {
    return bankDaten;
    }


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 7:08 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Quote:
also der CascadeType aus javax.persistence?


Ja.

Was fuer einen Cascadetyp benuetzt Du den jetzt nun konkret ?


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 7:16 am 
Newbie

Joined: Wed Feb 08, 2012 6:04 pm
Posts: 5
welchen sollte ich den benutzen? ich hab eigentlich alle durchprobiert das Resulat war immer das selbe
die BankDaten wurden immer mit gelöscht.


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 8:42 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Benutze mal keinen Cascade ueberhaupt.
Vergewissere Dich auch, dass es diejenigen Annotierten Klassen sind, die hibernate zieht.
Nicht dass Du etwa diesselben Klassen irgendwoanders duplizierts hast z.b. in einem Jar file oder aehnliches.
Verwendest Du zusaetzliche xml-files oder benutzt Du rein die Annotations ?


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 10:19 am 
Newbie

Joined: Wed Feb 08, 2012 6:04 pm
Posts: 5
Danke für deine Hilfe pb00067 mein Problem hat sich erledigt ;), indem ich einfach auf HyperSQL umgestiegen bin. Ich wollte zu testzwecken MySQL nutzen, da ich mit MySQL schon Erfahrungen gesammelt habe und dann auf eine andere DB umsteigen.


Top
 Profile  
 
 Post subject: Re: One-To-One "Aggregation"
PostPosted: Thu Feb 09, 2012 11:19 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Mit dem Umstieg auf eine andere Datenbank das Loeschproblem beseitigt ... naja wenn Du's selbst glaubts.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 10 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.