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

Mik*_*cer 2 java hibernate jpa joincolumn

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

@ManyToOne
@JoinColumn(name="address_id")
public Address getAddress() { 
    return address; 
}
Run Code Online (Sandbox Code Playgroud)

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

Pre*_*ric 8

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

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

field_nameaddress在你的情况,并id_column_name指的是相关实体的ID,这是id.因此,您address_id默认获得.

  • @MikhailBatcer 由于您似乎在使用 Hibernate,您可以实现自己的 `org.hibernate.cfg.NamingStrategy` 并使用参数 `hibernate.ejb.naming_strategy` 进行注册。查看 [此链接](http://www.petrikainulainen.net/programming/tips-and-tricks/implementing-a-custom-namingstrategy-with-hibernate/) 了解更多信息。 (2认同)