在Hibernate中,要指定一个用于连接关联的列,使用@JoinColumn注释,例如:
@ManyToOne
@JoinColumn(name="address_id")
public Address getAddress() {
return address;
}
在大多数情况下,列的名称是以snaked为主的类名加_id
。因此,期望Hibernate自动派生它是合理的(例如,在Django的ORM中完成)。但这种行为是以某种方式实现的吗?
答案 0 :(得分:6)
没有必要,JPA遵循约定优于配置原则,这意味着总有一些默认值可以用注释覆盖。
如果是@JoinColumn
,则会生成默认列名,如下所示:<field_name>_<id_column_name>
field_name
为address
,而id_column_name
指的是相关实体的ID,即id
。因此,您默认获得address_id
。
答案 1 :(得分:1)
没有必要使用 @JoinColumn
注释。你总是可以覆盖它。如果您不希望在代码中提供它,那么Hibernate会自动为您生成一个,即列的默认名称。