当我们上课时:
@Entity
Order implements Serializable {
@Id
private Integer id;
...
}
和
@Entity
OrderLine implements Serializable {
@Id
private Integer id;
@ManyToOne
Order order;
...
}
属性订单会将行名称映射到哪个
order_id, ORDER_ID or Order_id?
(省略@JoinColumn(name ='order_id')是故意的)
答案 0 :(得分:24)
以下是JPA 1.0规范关于JoinColumn
注释的内容:
9.1.6 JoinColumn Annotation
...
name
注释元素定义 外键列的名称。 剩下的注释元素 (referencedColumnName
除外) 请参阅此栏并具有相同的内容 列的语义 注释如果有一个连接列,和 如果
name
注释成员是 缺少,连接列名称是 形成的连接形式 以下:引用的名称 关系属性或领域 引用实体; “_”;的名字 引用的主键列。如果 没有这样的参考 关系属性或领域 实体(即使用连接表), 连接列名称形成为 连接以下内容: 实体名称; “_”;的名字 引用的主键列。...
因此,在您的示例中,外键列的默认名称为order_id
。
答案 1 :(得分:20)
我可能不理解你的问题。但是,你不需要像下面这样的东西吗?
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="order_id", nullable=false)
Order order;