Ich habe eine @JoinTable
für eine @ManyToMany
angegeben, so dass ich Namen für die Tabelle, Spalten und Fremdschlüssel angeben können.Hibernate generiert eigene eigene Join-Tabelle, wenn ich eine
Hibernate scheint mir richtig zu generieren, aber es versucht immer noch, es zu erzeugen.
Hier ist die Entität mit der @ManyToMany
in Frage. Enthält nur relevanten Code von der Entität.
@Entity
@Table(name = "DAMAGE")
public class DamageReport {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "DAMAGE_ID_GENERATOR")
@SequenceGenerator(name = "DAMAGE_ID_GENERATOR", sequenceName = "DAMAGE_ID_SQ")
@Column(name = "DAMAGE_ID")
private Long id;
//...Bunch of other fields
@ManyToMany
@JoinTable(name = "BOARD_MEMBER_DAMAGE_REPORTS", joinColumns = {
@JoinColumn(name = "DAMAGE_REPORT_ID") }, inverseJoinColumns = {
@JoinColumn(name = "BOARD_MEMBER_ID") }, foreignKey = @ForeignKey(name = "DAMAGE_REPORT_ID_FK"), inverseForeignKey = @ForeignKey(name = "BOARD_MEMBER_ID_FK"))
private Set<BoardMember> boardMembers;
}
Hier ist die andere Entität in der @ManyToMany
. Enthält nur relevanten Code von der Entität.
@Entity
@Table(name = "BOARD_MEMBER")
public class BoardMember {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "BOARD_MEMBER_ID_GENERATOR")
@SequenceGenerator(name = "BOARD_MEMBER_ID_GENERATOR", sequenceName = "BOARD_MEMBER_ID_SQ")
@Column(name = "BOARD_MEMBER_ID")
private Long id;
@ManyToMany
public Set<DamageReport> damageReports;
}
Jede Hilfe wird sehr geschätzt.
Wow. Das war einfach. Vielen Dank! - Gibt es einen Grund, warum ich das auf der 'DamageReport' Seite nicht hinzufügen kann? – qbolt
Ja, es gibt. Beim bidirektionalen Mapping muss immer eine Eigentümerseite (DamageReport in diesem Fall) und eine andere Seite (BoardMember) muss ** only ** auf die Ownerseite verweisen (mit mappedBy = "boardMembers"). – adyjr