使用用户管理的连接表对象的双向多对多

@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 文档