如何在 Spring 数据 JPA 中映射一个 table 有 2 列引用相同的 table

How to map a table in Spring Data JPA that has 2 columns referencing the same table

我有一个 table,它有 2 个字段(pseudonymProfile 和 realProfile),它们都连接到同一个 table。当我尝试进行如下所示的映射时,我 运行 出错了,因为这 2 个字段在它们的 @JoinColumn 注释中使用了相同的名称 (profile_id)。我的印象是,在定义连接列时,我需要将名称指定为 以便 spring 引导正确执行连接,但在这种情况下它们具有相同的名称,这会导致错误。有人可以帮我看看我错过了什么吗?谢谢!

@Entity
@Table(name = "book")
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private UUID id;

    @Column(name = "title")
    private String title;

    @ManyToOne
    @JoinColumn(name = "profile_id")
    private Profile pseudonymProfile;

    @ManyToOne
    @JoinColumn(name = "profile_id")
    private Profile realProfile;
}
@ManyToOne
@JoinColumn(name = "pseudonym_profile_id", referencedColumnName = "profile_id")
private Profile pseudonymProfile;

@ManyToOne
@JoinColumn(name = "real_profile_id", referencedColumnName = "profile_id")
private Profile realProfile;

只是一个应该有效的示例。 JoinColumn#referencedColumnName

但我想如果您完全删除那些 @JoinColumn,一切都会按预期工作。

更新:

我觉得非常可疑的另一件事是您使用 @OneToMany 而不是 @ManyToOne 这更有意义。

如果您的业务逻辑是支持一本书的多个配置文件,您将不得不使用 Collection<Profile>@OneToMany