Hibernat Annotations: Probleme mit @OneToMany

Ciscolos

Grünschnabel
Hallo Leute,

ich habe noch nicht viel Erfahrung mit Hibernate Annotations und versuche eine
"OneToMany" Beziehung von einen Objekt einer Klasse zu anderen Objekten der selben Klasse zu erstellen, mein bisheriger Weg sieht folgt aus:

Code:
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;


@Entity()
@Table(name = "sn_user", uniqueConstraints = {@UniqueConstraint(columnNames={"userName"})})
public class SNUser  implements java.io.Serializable {
	private static final long serialVersionUID = 1L;
   
    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    private Integer id;
	
    private String userName;
    private Character sex;
    private String forename;
    private String surname;
   
    @OneToMany(cascade = CascadeType.ALL)
    private Set <SNUser>friends;
...

Hierbei wird in der Datenbank zwar eine Koppeltabelle angelegt,
diese kann aber nur in der sn_user_id Spalte die gleiche id haben.
Die friends_id Spalte wir als unique angelgt, somit habe ich keine
möglichkeit für einen weiteren sn_user(id=2) die gleichen Freunde wie
der sn_user mit der id=1 anzulegen.


oid;sn_user_id;friends_id
768818;1;1
768808;1;2
768809;1;3
768819;2;3 <- nicht möglich da friends_id unique

Kann mir jemand helfen diese Problem zu lösen? Was fehlt bei meiner Annotation um zu
vermeiden das "friends_id" als "unique" angelegt wird ?

Danke

LG
Ciscolos
 
Okay.. ich formulier das Problem noch einmal anders :)

Ich möchte eine N:M-Beziehung auf das gleiche / (selbe?) Objekt mittels Annotation realisieren
-> 1 User hat N Freunde (die selbst auch User sind)

Das Problem mit der automatisch generierten Tabelle (mit den unique-keys) besteht also immernoch..
Wenn ich den automatisch erzeugten constraint lösche, funktioniert es zwar, aber das kann doch nicht die Lösung sein ;)

Danke euch schonmal :)
 
Zurück