@JoinTable加入三个表

时间:2017-06-02 19:25:55

标签: java jpa

如何使用@JoinTable加入三个表?

我有三张桌子:

user:
id, name 

post:
id, date

company:
id, name

我想创建一个包含以下列的新表:

user_id, post_id, company_id.

我用过:

@JoinTable(name = "new_table", joinColumns = @JoinColumn(name = "user_id"),
    inverseJoinColumns = @JoinColumn(name = "post_id"))

但是,我不知道如何添加第三列。

1 个答案:

答案 0 :(得分:2)

您不能使用@JoinTable注释。 @JoinTable注释仅用于@ManyToMany关系。

您需要创建一个包含三个字段的新实体,每个字段必须包含@ManyToOne和@JoinColumn注释。

For Instance:

@Entity
@Table(name = "table_name")
class NewEntity {

    //Id and anothers fields

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne
    @JoinColumn(name = "post_id")
    private Post post;

    @ManyToOne
    @JoinColumn(name = "company_id")
    private Company company;

    //getters and setters       
}