# Hibernate Foreign Key definieren



## mavinatic (22. Mai 2012)

Hallo Community,

ich stehe vor einer ziemlich einfachen Frage, welche selbst Google mir nicht beantworten kann. Ich benutze die JPA und Hibernate. Ich habe folgendes Objekt / Tabelle:

AuditEntry mit den Attributen: entryId, auditMessage, userId
UserInformation mit den Attributen: userId, userPassword, ...

Nun möchte ich im AuditEntry das Attribut "userId" als ForeignKey definieren. Wie mache ich das in Hibernate?

Gruß


----------



## Deros (22. Mai 2012)

ohh ja ganz was besonderes


----------



## JimPanse (29. Mai 2012)

Warum sollte userId ein ForeignKey sein? Wenn eine Entity User existiert sollte dort in deiner Audit Tabelle auch die Entity User sein mit einer @ManyToOne Annotation drauf - ansonsten zur Perfomance Steigerung reicht ein @Index.

Hibernate: Annotation Reference:
Galileo Computing, Artikel Hibernate: Annotation Reference


----------



## nillehammer (29. Mai 2012)

mavinatic hat gesagt.:
			
		

> AuditEntry mit den Attributen: entryId, auditMessage, userId
> UserInformation mit den Attributen: userId, userPassword, ...
> 
> Nun möchte ich im AuditEntry das Attribut "userId" als ForeignKey definieren. Wie mache ich das in Hibernate?
> ...


Nur in der Datenbankwelt gibt es sowas wie Primärschlüssel und ids/Fremdschlüssel zur Herstellung einer Beziehung. In der Objektwelt stellst Du die Beziehung mit Attributen des entsprechenden Typs her. Du darfst dort nicht in Datenbank-Kategorien denken. Ersetze also Dein Attribut userId (wahrscheinl. Long oder Integer) durch ein Attribut vom Typ UserInformation.


----------



## JimPanse (30. Mai 2012)

Obwohl man natürlich bei einer Audit Tabelle so argumentieren kann, dass es keine Bezeihung zum ERM gibt sondern nur eine Historie der Aktionen geführt werden soll. Dann reicht ein Index auf userId.


----------

