java - @JoinTable 连接三个表

标签 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"))

但是,我不确定如何添加第三列。

最佳答案

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

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

例如:

@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       
}

关于java - @JoinTable 连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44336116/

相关文章:

java - 对 JPA 连接的 SQL 查询

java - 需要了解一下使用 Map 和 @MapKeyColumn 的 @oneToMany

java - 如何在 Java 中创建 ZIP 文件?

java - Glassfish:为什么同一个 MDB 有 2 个池:一个在 ejb 中,一个在 war 中?

java - 将字符串转换为 SQL 日期

java - 抽象还是封装?

java - JPA 与 JDBC、存储过程和 Co. 或如何说服老派程序员尝试 ORM?

java - 一对一和多对一实体关系之间是否存在实现差异?

jpa - 使用 JTA 时无法使用 EntityTransaction

java - 使用 JNI 加载 C 插件系统 : undefined symbol