Hibernate Mapping User2User

Tservarius

Mitglied
Hi Leute,

habe eine kleine Frage zu einem Hibernate Mapping.
Mein erster Test lief wunderbar.. Habe eine Klasse "User" welche auch wunderbar in der Datenbank abgebildet wird. Möchte jetzt ein Attribut "Vertreter" hinzufügen, also dass
ein Benutzer von einem anderen vertreten werden kann.
Reicht dazu ein einfaches

Code:
private User vertreter;

in der Klassendatei? Wie muss das <one-to-one> Mapping für diese Geschichte aussehen?
Der Vertreter ist exakt vom gleichen Typ wie auch der User.

Hoffe auf Hilfe, danke!

user.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

  <class name="eu.***.mappings.User" table="user">

    <id name="userid" column="userid" type="java.lang.Integer">
        <generator class="native"/>
    </id>

    <property name="vorname" column="vorname" />
    <property name="nachname" column="nachname" />
    <property name="wohnort" column="wohnort" />

  </class>

</hibernate-mapping>

User.java
Code:
package eu.***.mappings;

public class User {

	private int userid;
	private String vorname;
	private String nachname;
	private String wohnort;



	public String getNachname() {
		return nachname;
	}
	public void setNachname(String nachname) {
		this.nachname = nachname;
	}
	public String getVorname() {
		return vorname;
	}
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	public String getWohnort() {
		return wohnort;
	}
	public void setWohnort(String wohnort) {
		this.wohnort = wohnort;
	}
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}


}
 
Hallo,

Code:
Reicht dazu ein einfaches


Code:
private User vertreter;

in der Klassendatei

dazu müssten noch eine Getter und eine Setter-Methode, aber sonst reicht das.

Ich hab noch nicht soviel mit Hibernate gemacht, aber ich würde sagen, dass es ausreicht, wenn du das in deine Mapping-Datei einträgst. Konnte es jetzt auch nicht ausprobieren.

Code:
<one-to-one name="vertreter" class="User"/>

MFG

zEriX
 
hi,

also so einfach ging das leider nicht....
mysteriöserweise gibts keinen Fehler im Log / auf der Console aber es werden auch nicht ein entsprechender foreign key als vertreter angelegt.

muss man evtl. in dem:
Code:
<one-to-one name="vertreter" class="User"/>
noch irgendwie ein property aus der klasse angeben, also in diesem fall die userid, über die das ganze als key abgebildet wird ?

oder hat sonst jemand eine idee, was da falsch läuft ?
 
Versuche das mal:

Code:
<many-to-one name="vertreter" class="User" column="<fremdschluessel>" unique="true"/>

<fremdschlüssel> ist dabei der Primärschlüssel des referenzierten Users.

Gruß, Basti
 
genau :) aber zumindest schonmal ein Ansatz.. sonst niemand eine idee für diese rekursive one-to-one ? hab auch schon bei hibernate ins forum gepostet und auch schon diverse literatur gewälzt, nur dieses eine thema fehlt anscheind überall.....

beziehungen zwischen anderen klasssen, alles kein problem, nur one-to-one beziehung zur eigenen klasse / tabelle, da find ich nix..
 

Neue Beiträge

Zurück