2017-05-31 4 views
0

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.

Antwort

0

Verwenden mappedBy auf der anderen Seite die bidirektionale Zuordnung vervollständigen:

@ManyToMany(mappedBy = "boardMembers") 
public Set<DamageReport> damageReports; 
+0

Wow. Das war einfach. Vielen Dank! - Gibt es einen Grund, warum ich das auf der 'DamageReport' Seite nicht hinzufügen kann? – qbolt

+0

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