sebastianb
Erfahrenes Mitglied
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:
Hier noch mein Mapping
Employee:
Project:
Activity:
Viele Dank für Eure Hilfe
Sebastian
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:
Hier noch mein Mapping
Employee:
Java:
@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;
Java:
@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:
Java:
@ManyToOne(fetch = FetchType.LAZY)
private Project project;
@ManyToOne(fetch = FetchType.LAZY)
private Employee employee;
Viele Dank für Eure Hilfe
Sebastian