在Hibernate中,要指定加入关联的列,使用@JoinColumn注解,例如这样:
@ManyToOne
@JoinColumn(name="address_id")
public Address getAddress() {
return address;
}
在大多数情况下,列的名称是蛇形大小写的类名加上_id
。因此,期望 Hibernate 自动派生它是合理的(例如,在 Django 的 ORM 中就是这样做的)。但是这种行为是否以某种方式实施?
在Hibernate中,要指定加入关联的列,使用@JoinColumn注解,例如这样:
@ManyToOne
@JoinColumn(name="address_id")
public Address getAddress() {
return address;
}
在大多数情况下,列的名称是蛇形大小写的类名加上_id
。因此,期望 Hibernate 自动派生它是合理的(例如,在 Django 的 ORM 中就是这样做的)。但是这种行为是否以某种方式实施?
没有必要,JPA 遵循约定优于配置原则,这意味着总有一些默认值可以用注释覆盖。
如果是@JoinColumn
,则生成默认列名,如下所示:<field_name>_<id_column_name>
field_name
在address
您的情况下,并且id_column_name
指的是相关实体的 id,即id
. 因此,您address_id
默认获得。
没有必要有@JoinColumn
注释。您始终可以覆盖它。如果您不在代码中提供它,那么 Hibernate 会自动为您生成一个,即您的列的默认名称。