@JoinColumn注释在Hibernate中是必需的吗?

时间:2016-01-14 11:13:20

标签: java hibernate jpa joincolumn

在Hibernate中,要指定一个用于连接关联的列,使用@JoinColumn注释,例如:

@ManyToOne
@JoinColumn(name="address_id")
public Address getAddress() { 
    return address; 
}

在大多数情况下,列的名称是以snaked为主的类名加_id。因此,期望Hibernate自动派生它是合理的(例如,在Django的ORM中完成)。但这种行为是以某种方式实现的吗?

2 个答案:

答案 0 :(得分:6)

没有必要,JPA遵循约定优于配置原则,这意味着总有一些默认值可以用注释覆盖。

如果是@JoinColumn,则会生成默认列名,如下所示:<field_name>_<id_column_name>

在您的情况下,

field_nameaddress,而id_column_name指的是相关实体的ID,即id。因此,您默认获得address_id

答案 1 :(得分:1)

没有必要使用 @JoinColumn 注释。你总是可以覆盖它。如果您不希望在代码中提供它,那么Hibernate会自动为您生成一个,即列的默认名称。