ManyToOne关系是否需要@joinColumn名称属性?

时间:2017-10-02 16:55:55

标签: java hibernate jpa orm

通过this tutorial on how to implement equals and hashcode获取JPA实体,并在Company中注释Product引用,如下所示:

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "company_id", 
            nullable = false, updatable = false)
private Company company;

name = "company_id"部分是否必要?

1 个答案:

答案 0 :(得分:1)

name仅需要定义SCHEMA。由于JPA API

分配了默认名称,因此不是必需的
  

(默认仅在使用单个连接列时适用。)   连接以下内容:引用的名称   关系属性或引用实体的字段或可嵌入的   类; “”;引用的主键列的名称。如果有   在实体中没有这样的引用关系属性或字段,或   如果连接用于元素集合,则连接列名称为   形成如下的串联:实体的名称;   “”;引用的主键列的名称。

此外,可以说,无论如何,在注释中对模式信息进行硬编码并不是很好的做法,以防它们需要在部署时进行更改。