使用使用者管理的連線表物件的雙向多對多

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany(mappedBy = "bar")
    private List<FooBar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToMany(mappedBy = "foo")
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar {
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}

使用使用者管理的中間連線表指定許多 Foo 物件與許多 Bar 物件之間的雙向關係。

Foo 物件作為行儲存在名為 FOO 的表中。Bar 物件作為行儲存在名為 BAR 的表中。FooBar 物件之間的關係儲存在名為 FOO_BAR 的表中。作為應用程式的一部分,有一個 FooBar 物件。

當你想要在連線物件上儲存額外資訊(例如建立關係的日期)時,通常使用此選項。

StackOverflow 文件