-->
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.  [ 6 posts ] 
Author Message
 Post subject: one-to-one Beziehung auf sich selbst
PostPosted: Fri Jun 23, 2006 10:05 am 
Newbie

Joined: Fri Jun 23, 2006 9:47 am
Posts: 9
Hibernate version: 3.1.1


Guten Tag,

ich möchte gerne eine Indextabelle aufbauen, dazu habe ich eine Bean geschrieben, die diese Struktur hat:

public class IndexTable
{
private long inr;
private String tabname;
private long keyfield;

private IndexTable indextable;
}

In dieser Tabelle möchte ich die Datenbankstruktur abbilden (indizieren), jeder Datensatz ist ein Tupel mit (tabname, keyfield).

Das Problem ist, ich brauche eine 1 : 1 Beziehung, die auf diese Tabelle zeigt. Jeder Datensatz in dieser Tabelle zeigt auf einen anderen in derselben Tabelle, um die Beziehungen der Datensätze in der Datenbank abzubilden.

Ich habe bei der Bean diesen xdoclet - Eintrag:
@hibernate.one-to-one class="bean.IndexTable"

Bei unterschiedlichen Tabellen funktioniert das problemlos, bei derselben Tabelle bekomme ich über den Fremdschlüssel leider denselben Datensatz (also dieselbe Instanz der Bean, von der ich den Getter aufrufe).

Wie gesagt: Bei 2 Verschiedenen Tabellen und damit 2 verschiedenen Beans funktioniert das problemlos . .
Was mache ich also falsch? Hat Jemand einen Tipp?

Danke. .

mfg
mondoshawan


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 23, 2006 11:08 am 
Newbie

Joined: Fri Jun 23, 2006 9:47 am
Posts: 9
Zu dem o. a. Problem:

Eine Lösung ist, eine N:1 - Beziehung auf sich selbst zu setzen, dann setzt Hibernate eine neue Spalte mit dem Fremdschlüssel ein.
Das funktioniert problemlos, aber vom Verständnis her macht das wenig Sinn, da es trotztem eigentlich eine 1:1 Beziehung ist.

Gibts elegantere Lösungen?

Gruß

mondoshawan


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jun 25, 2006 7:00 am 
Newbie

Joined: Sun Jun 25, 2006 6:48 am
Posts: 2
Ich glaube, du machst einen Denkfehler. Bei einer 1:1-Beziehung verweist du von einem Datensatz genau auf denselben - irgendwie sinnlos. Je nach Bedarf müsstest du daher eine 1:n oder n:m Beziehung nutzen.

1:n wenn die Struktur baumartig ist mit einem Wurzelelement z.B. Kategorien bei Ebay,

n:m wenn ein Element mehrere Vorgänger und auch Nachfolger haben kann, z.B. Familienstammbaum.

gruß teclis


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jun 26, 2006 1:44 pm 
Newbie

Joined: Fri Jun 23, 2006 9:47 am
Posts: 9
Ja,

du hast recht, es ist eine N:1 Beziehung. Dann machts auch Sinn. .

Gruß
mondoshawan


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 29, 2006 8:17 am 
Newbie

Joined: Thu Jun 29, 2006 6:47 am
Posts: 3
Hallo zusammen

Quote:
Ich glaube, du machst einen Denkfehler. Bei einer 1:1-Beziehung verweist du von einem Datensatz genau auf denselben - irgendwie sinnlos.


Bei einer 1:1-Beziehung wird nicht ein Datensatz mit sich selbst "verbunden", sonder z.B. ein Datensatz der Tabelle A mit einem anderen aus der Tabelle A. Was man dann als Unäre 1:1-Beziehung bezeichnet wird. So weit ich das beurteilen kann, macht das dann schon Sinn. Ob es aller dings Sinn macht einen Datensatz mit sich selbst zu verknüpfen, das kann ich gerade nicht beurteilen....

(Beispiel:
Entität: Person
Spalten: ID (PK), VaterID (FK)[UNIQUE], Name, ...
(ist für die VaterID Spalte das UNIQUE Attribut nicht gsetzt ist es in der Tat eine 1:N-Bezieung))

Ob dies mit hibernate dann als 1:n dargestellt werden muss kann ich leider auch nicht beurteilen, da dafür hibernate noch nicht genügend kenne, aber das kann ich mir irgendwie nicht vorstellen...

hoffe damit kann man was anfangen

gruss


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 29, 2006 8:18 am 
Newbie

Joined: Thu Jun 29, 2006 6:47 am
Posts: 3
sry doppel post....


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