gpt4 book ai didi

java - 未规范化的数据库中的 JPA OneToMany 关系

转载 作者:行者123 更新时间:2023-12-01 11:07:42 25 4
gpt4 key购买 nike

在我的 EclipseLink JPA 系统中,我想使用 OneToMany 访问自定义查询。不幸的是,数据库没有标准化。

简化的我的数据库如下所示:

公司

ID Name      
-----------
01 CompanyA
02 CompanyB

ID Company_Id Name  Occupation
------------------------------
01 01 Alice Management
02 01 Bob Accounting
03 01 Carl Accounting

职业作为自然键给出。

非常简单,我有以下代码:

@Entity
class Company {
@Id
@Column private Integer id;
@Column private String name;

@OneToMany()
@JoinColumn(name="Company_Id")
private List<Person> persons;
}

@Entity
class Person {
@Id
@Column private Integer id;
@Column private Integer company_id;
@Column private String name;
@Column private String occupation;
}

到目前为止,一切运行良好。现在我想添加一个 OneToMany 关系,该关系列出了职业,并使我能够获取拥有该职业的人员列表。

我想做:

for (Company c : myCollectionOfCompanyEntities) {
System.out.println(c.name);
for (OccupationsInCompany o : c.getOccupations()) {
System.out.println(o.name);
for (Person p : o.getPersons()) {
System.out.println(p.name);
}
}
}

如何开始编写 OccupationsInCompany 类?如果我只是创建一个实体类,JPA 想要从表中读取数据。

我知道如何使用自定义查询手动获取所有数据。但是可以使用 OneToMany 注释来做到这一点吗?

最佳答案

您应该能够通过使用 @ElementCollection 注释来完成此操作。

@ElementCollection
@CollectionTable(name = "PEOPLE", joinColumns = {@JoinColumn(name="Company_Id")})
private List<Person> people;

有用的链接:WikiBooks .

关于java - 未规范化的数据库中的 JPA OneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32762533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com