0

我有一个 JPA2 (Hibernate) 应用程序,它使用一个只有两个表的 MySQL 数据库。一张表称为“公司”,另一张表称为“员工”。两张表之间存在一对多的关系(1 家公司有很多员工)。表“employees”中的外键列称为“company_id”。

在我的 JPA2 应用程序中,我使用以下注释:

在实体类“公司”中,我有以下注释

@OneToMany(cascade = CascadeType.ALL)
private Collection<Employee> employees;

在课堂上 Employee

@ManyToOne
private Company company;

JPA 如何知道它应该使用哪个列来确定公司的所有员工。注释不包含此信息,但应用程序有效。

谢谢

4

1 回答 1

2

ManyToOne侧面缺少可选注释,该JoinColumn注释又具有name默认为的可选属性:

以下内容的串联:引用实体或可嵌入类的引用关系属性或字段的名称;“(下划线)”;引用的主键列的名称。如果实体中没有这样的引用关系属性或字段,或者如果连接是针对元素集合的,则连接列名称由以下内容的串联形成:实体名称;“(下划线)”;引用的主键列的名称。

在关系的另OneToMany一边,它缺少mappedBy属性(它应该等于拥有关系的字段的名称,在您的情况下为“公司”)。Javadoc 说除非关系是单向的,否则此属性是必需的,因此您使用的 JPA 实现有可能假设关系是单向的。

于 2013-07-24T15:50:52.037 回答