-->
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.  [ 8 posts ] 
Author Message
 Post subject: User-Freunde in einem Social Network Mappen
PostPosted: Wed Jul 02, 2008 9:54 pm 
Newbie

Joined: Wed Jul 02, 2008 8:44 pm
Posts: 14
Location: Zurich, Switzerland
Ich versuch grad User in einem Social Network zu mappen, jetzt ist eines der wichtigsten features die Freundesliste. Soll heissen jeder User hat eine Liste mit seinen Freunden. Freund-sein ist bidirectional und ist also eine ManyToMany relation. Jetzt frag ich mich wie ich das am besten mappe. Also mein Code (snippet) sieht so aus:
Code:
@Entity
@Table(name="users")
public class User {
   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   @Column(name="userid")
   protected Long id = null;
   @ManyToMany
   protected List<User> friends = null
}

Das was mir Probleme macht ist dass es sich um ein und dieselbe Klasse handelt und es deshalb keine Owner klasse giebt.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 03, 2008 3:54 am 
Regular
Regular

Joined: Tue Jun 03, 2008 1:12 pm
Posts: 84
Location: germany
kein problem mach einfach ne direkte beziehung zu deiner klasse..kannst au manuell angeben mit

@ManyToMany(targetEntity = Users.class)
...


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 03, 2008 7:59 am 
Newbie

Joined: Wed Jul 02, 2008 8:44 pm
Posts: 14
Location: Zurich, Switzerland
Und das garantiert mir dass die relation bidirectional ist? Das Problem is dass es ja eine relations-tabelle erstellt in der in der ersten spalte der user steht und in der zweiten der freund, was aber bedeutet dass wenn ich es vom freund aus sehe wird hibernate die erste spalte scannen und ihn nicht mehr finden, oder seh ich das falsch?


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 04, 2008 7:11 am 
Regular
Regular

Joined: Tue Jun 03, 2008 1:12 pm
Posts: 84
Location: germany
bidirectional machst du es mit

@ManyToMany(mappedBy="...")


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 04, 2008 9:40 am 
Newbie

Joined: Wed Jul 02, 2008 8:44 pm
Posts: 14
Location: Zurich, Switzerland
Wenn ich das mach, bekomm ich dann nicht den fehler dass ich auf beiden seiten der relation den mappedBy-parameter gesetzt hab'? So war das auf jeden Fall bei einem einfacheren Mapping. Ich probier's mal aus


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jul 07, 2008 3:51 pm 
Expert
Expert

Joined: Thu Jul 05, 2007 9:38 am
Posts: 287
Du hast hier ein kleines Problem mit der Nomenklatur.

1."Freund-sein ist bidirectional und ist also eine ManyToMany relation"

Das eine hat mit dem anderen nichts zu tun.

Bidirektional ist eine Beziehung, wenn sie von beiden Seiten sichtbar ist. Man kann ManyToMany-Relationen unidirektional machen oder oneToMany bidirektional (die Rückrichtung ist dann natürlich ManyToOne)

2. Was du meinst ist Reflexiv, d.h. man kann die beiden Partner in der Beziehung miteinander tauschen.

Ich wüsste nicht, das soetwas von Hibernate direkt unterstützt wird. Auch in der Datenbank ist so etwas problematisch darzustellen. Ich würde die Beziehung in eine einfache one-to-many Beziehung umwandeln, und in der Java Klasse sicherstellen, dass wenn a b als Freund hat, dass dann auch b a als Freund bekommt.

Regards
Jens

_________________
Please rate useful posts.


Schauderhaft: Softwaredevelopment, Projectmanagement, Qualitymanagement and all things "schauderhaft"


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jul 07, 2008 4:48 pm 
Newbie

Joined: Wed Jul 02, 2008 8:44 pm
Posts: 14
Location: Zurich, Switzerland
Klingt ganz vernuenftig.
Kann man bei den Relationen nicht irgendwie eine Query mitgeben die sich darum kuemmert?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 27, 2008 9:41 pm 
Newbie

Joined: Wed Jul 02, 2008 8:44 pm
Posts: 14
Location: Zurich, Switzerland
Hm, irgendwie hab' ich dieses Problem immer noch. Ich bin kurz davor einfach eine Sonderklasse zu machen die sich dem ganzen annimmt.

Giebt es eine Art wie ich einfach zu einer OneToMany relation sagen kann mit welcher query die daten aus der DB geladen werden sollen?
Dann koennte ich naemlich einfach eine klasse friendship machen und sowohl nach user a als auch b suchen wenn ich alle friendships auslese ^^


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