ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
1015
1015
EMPFEHLEN
-
12.01.11 18:26 #1
- Registriert seit
- Dec 2009
- Beiträge
- 125
Hallo Zusammen,
ich habe gerade in kleines Problem mit meinem Hibernate-Mapping und und finde einfach keine passende Lösung.
Was ich mache will ist ein relativ simples Mapping von 3 Entites.
Employee <> Project (M:N) => JoinTable EMP_PROJ
weiterhin habe ich eine Entity Activity, die zu Employee und Project in einer M:1 Verbindung steht. Deshalb wollte ich den ForeignKey von Acitivity ebenfalls mit in die oben genannte Join Tabelle aufnehmen, da eine Activity nur über die Employee - und Project id eindeutig referenziert werden kann.
Die Join Tabelle sollte nun ein zusammengesetzten PK aus den FKs zu Project und Employee enthalten und zusätzlich ein FK der Activity referenziert. Leider baut mir Hibernate die EMP_PROJ Tabelle aber so, dass der PK aus alle 3 FKs besteht.
So sollte es jedenfalls aussehen:
http://blog.sebastianbraun.org/bilder/jointable.png
Hier noch mein Mapping
Employee:
Project:Code java:1 2 3 4 5 6 7 8
@OneToMany(fetch = FetchType.LAZY) @JoinTable(name = "EMP_PROJ", joinColumns = @JoinColumn(name = "EMPLOYEE_ID"), inverseJoinColumns = @JoinColumn(name = "ACTIVITY_ID", nullable = true)) @Column(nullable = true) private Set<Activity> activities; @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "EMP_PROJ", joinColumns = @JoinColumn(name = "EMPLOYEE_ID"), inverseJoinColumns = @JoinColumn(name = "PROJECT_ID")) private Set<Project> projects;
Code java:1 2 3 4 5 6 7
@OneToMany( fetch = FetchType.LAZY) @JoinTable(name = "EMP_PROJ", joinColumns = @JoinColumn(name = "PROJECT_ID"), inverseJoinColumns = @JoinColumn(name = "ACTIVITY_ID", nullable=true)) @Column(nullable=true) private Set<Activity> activities; @ManyToMany(mappedBy = "projects", fetch = FetchType.LAZY) private Set<Employee> employees;
Activity:
Code java:1 2 3 4 5
@ManyToOne(fetch = FetchType.LAZY) private Project project; @ManyToOne(fetch = FetchType.LAZY) private Employee employee;
Viele Dank für Eure Hilfe
Sebastian
-
Hallo Sebastian,
ich würde die beiden Schlüssel mit in die Activity Tabelle nehmen und aus der emp_proj Tabelle entfernen, zumal stell dir folgende Fragen:
- Wie viele Zeilen enthält die emp_proj Tabelle, wenn du ein Projekt mit einem Mitglied anlegst? 1
- Wie viele Zeilen enthält sie, nachdem Du 5 Activities angelegt hast? 5
- Wie viele Zeilen würdest Du bekommen, wenn du nur Projekte und Employees auflöst? Sollte 1 sein, wird aber 5 ergeben ...
- Warum ist das so?
Gruß Sen
Ähnliche Themen
-
Hibernate Type Mapping
Von chaertl im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 02.09.08, 09:55 -
Hibernate: Mapping v. Beziehungen und was Hibernate daraus macht
Von DerGrinsemann im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 14.08.08, 12:53 -
hibernate-mapping Problem
Von oldboy im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.06.08, 10:29 -
Hibernate-Mapping
Von splitshade im Forum JavaAntworten: 0Letzter Beitrag: 24.09.07, 14:03 -
Hibernate Mapping Beispiel?
Von Romsl im Forum JavaAntworten: 7Letzter Beitrag: 18.05.05, 21:58





Zitieren
Login





