-->
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.  [ 7 posts ] 
Author Message
 Post subject: Hibernate 2 FKs auf die gleiche Tabelle
PostPosted: Mon Nov 05, 2007 12:16 pm 
Newbie

Joined: Mon Nov 05, 2007 12:10 pm
Posts: 5
Hallo,

ich habe folgendes Problem zu lösen:

Es gibt eine Tabelle Module.
Und es gibt eine Tabelle Mitarbeiter.

Jetzt soll Module zu einem Mitarbeiter zugeordnet werden.
Und es soll einen zweiten Mitarbeiter zugeordnet werden.

Also zwei unterschiedliche Foreign Key's.


Ich hätte auch gern die Suchfunktion benutzt, nur leider
weiß ich nicht genau, wie ich mein Problem richtig formuliere.

Ich hoffe, es kann mir einer weiterhelfen.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 06, 2007 2:06 am 
Regular
Regular

Joined: Tue Jan 03, 2006 9:20 am
Posts: 74
Sir brauchen einen dritten Tabelle, ModuleMitarbeiter.
Etwas wie
Code:
create table ModuleMitarbeiter
(ModuleId Numeric(11) not null,
MitarbeiterId Numeric(11) not null);

mit FKs zur Mitarbeiter und Module Tabellen.


Top
 Profile  
 
 Post subject: Gleiches Problem hier
PostPosted: Wed Nov 07, 2007 7:43 pm 
Newbie

Joined: Wed Nov 07, 2007 7:36 pm
Posts: 6
Hi,
ich stehe vor exakt dem gleichen Problem und bekomme es nicht gelöst:

Ich habe die beiden Klassen "Actor" und "Relationship" und möchte in "Relationship" genau zwei (!) Akteure (bzw. ihre Ids) als FK mappen.
Ich habe es schon mit zwei 1:n-Beziehungen versucht - ohne Erfolg.
M:n bringt mich auch nicht weiter, da ich trotzdem nur eine Spalte der FK bekomme, weil ich die ArrayList nicht aufspalten kann (ich verwende übrigens Annotations).
Irgendwie sehe ich den Wald vor lauter Bäumen nicht und wäre für Hilfe ebenfalls sehr dankbar ;-) ...
Grüße,
Jolliver


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 08, 2007 4:30 am 
Newbie

Joined: Mon Nov 05, 2007 12:10 pm
Posts: 5
Ich habe es gestern endlich hinbekommen und es funktioniert sogar.
Und wenn es einmal da steht, ist es sogar recht einfach.

Mit annotations geht es anscheinend genauso leicht, denn ein
Freund von mir, hatte genau das gleiche Problem und er hat es
relativ simpel gelöst, wie ich fande.

Also nochmal zur genauen Struktur:
Code:
Tabelle Module:
    module_id                  <pk>
    IDModulverantwortlicher    <fk1>
    IDStvModulverantwortlicher <fk2>
    ...

Tabelle Mitarbeiter:
    mitarbeiter_id             <pk>
    ...



Und IDModulverantwortlicher soll auf mitarbeiter_id zeigen
und IDStvModulverantwortlicher soll auf mitarbeiter_id zeigen.
Diese sind aber verschieden, deshalb auch <fk1> und <fk2>

Hier der Codeausschnitt aus Module.java mit Annotations
Code:
      @OneToOne
      @JoinColumn(name="IDMODULVERANTWORLICHER")
      public Mitarbeiter getMitarbeiter() {
         return mitarbeiter;
      }
      
      public void setMitarbeiter(Mitarbeiter newMitarbeiter){
         this.mitarbeiter = newMitarbeiter;
      }
      
      @OneToOne
      @JoinColumn(name="IDSTVMODULVERANTWORLICHER")
      public Mitarbeiter getStvMitarbeiter() {
         return stvMitarbeiter;
      }
      
      public void setStvMitarbeiter(Mitarbeiter newStvMitarbeiter){
         this.stvMitarbeiter = newStvMitarbeiter;
      }


Für eine Bidirektionale Verbindung müssten dann ja theoretisch bei
Mitarbeiter zwei Collections vorhanden sein, die dann entsprechend
auf das jeweilige Modul verweisen, also Stellvertreter oder Hauptverantwortlicher.


Ich selbst habe es Bidirektional mit XML Dateien gemacht und das sieht dann so aus:
Module.hbm.xml
Code:
      <many-to-one name="stvMitarbeiter"/>
      
      <many-to-one name="mitarbeiter"/>


Mitarbeiter.hbm.xml
Code:
      <bag name="module" >
         <key column="mitarbeiter" />
         <one-to-many class="Module"/>
      </bag>
       
      <bag name="moduleStv">
         <key column="stvMitarbeiter"/>
         <one-to-many class="Module"/>
      </bag>


Ich hoffe, es ist allen Hilfesuchenden mit dem gleichen Problem geholfen. :)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 08, 2007 7:07 am 
Newbie

Joined: Wed Nov 07, 2007 7:36 pm
Posts: 6
Bei Dir unterscheiden sich aber doch die beiden Versionen: Bei den Annotations benutzt Du auf der einen Seite eine OneToOne-Beziehung und bei XML OneToMany und ManyToOne. Das ist doch wohl nicht das Gleiche, oder ;-) ?
Zwei ManyToOne-Beziehungen zu verwenden hatte ich auch schon probiert, klappt aber leider nicht :-( .
Um das Problem einfacher zu beschreiben:
Ich hätte gerne eine 2:n-Beziehung abgebildet.
Besten Dank nochmals für die Hilfe!


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 08, 2007 9:01 am 
Newbie

Joined: Mon Nov 05, 2007 12:10 pm
Posts: 5
Das ist soweit richtig, aber
das eine, mit dern 1..1 Beziehung (Annotations) ist
von einem Kumpel.

Ich habe es momentan noch mit 0..n Beziehung,
aber Theoretisch ist es egal.
Man könnte ja auch eine 1..1 draus machen,
in dem man die eine Seite "not null" und die andere
"unique pk" macht.

Aber eigentlich müsste es kein Problem sein,
die OneToOne mit ManyToOne auszutauschen.

Aber ich kenn mich mit Annotations nicht aus,
eventuell kann dir jemand anderes weiterhelfen :)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 08, 2007 9:53 am 
Newbie

Joined: Wed Nov 07, 2007 7:36 pm
Posts: 6
Die Struktur bekomme ich auch hin, nur habe ich Probleme mit dem kaskadierenden Löschen. Aber nun ja, ich will Deinen Thread auch nicht vollspammen. Da mache ich mir lieber einen eigenen auf.
Auf jeden Fall schonmal danke für Deine Mühe und viel Erfolg weiterhin!
Grüße,
Jolliver


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 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.