4

在Hibernate中,要指定加入关联的列,使用@JoinColumn注解,例如这样:

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

在大多数情况下,列的名称是蛇形大小写的类名加上_id。因此,期望 Hibernate 自动派生它是合理的(例如,在 Django 的 ORM 中就是这样做的)。但是这种行为是否以某种方式实施?

4

2 回答 2

13

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

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

field_nameaddress您的情况下,并且id_column_name指的是相关实体的 id,即id. 因此,您address_id默认获得。

于 2016-01-14T11:19:53.133 回答
2

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

于 2016-01-14T12:37:12.337 回答