java - @JoinColumn 注解在 Hibernate 中是强制的吗?

标签 java hibernate jpa joincolumn

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

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

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

最佳答案

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

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

field_nameaddress在你的情况下,和 id_column_name指的是相关实体的id,即id 。因此,你得到address_id默认情况下。

关于java - @JoinColumn 注解在 Hibernate 中是强制的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788151/

相关文章:

Java内置数据结构用于绘制相邻房间的 map

java图形更新

java - 保留实体中可嵌入的列表

sql - 如何将此 native SQL 查询转换为 HQL

java - 添加自定义事件监听器(Hibernate)会引发 org.hibernate.MappingException : Unable to instantiate specified event (save-update) listener class

java - 是否可以将 @JoinColumn 从一个 FK 引用到 JPA/hibernate 中另一个 FK 中的另一列?

java - JPA 外键 OneToMany

java - 检查 javax.persistence.TypedQuery ResultSet 是否有更多结果

java - Hibernate:覆盖实体getter以添加注释

Java、代码生成和持久性框架