Java Jpa-如何使用具有重复数据的Jpa执行查询



我需要在两个相关的表之间形成一个查询,以获取所有不相关的记录和那些也相关的记录。

个人表具有带有公司表的@OneToMany。

个人的每条记录,可能与许多公司关联,也可能不与之关联,例如,在个人表中,一条记录在公司表中有五条关联记录,我需要通过将公司表中的数据分配给它来重复获得这条记录五次。我遇到的问题是,我只得到这个人的一条记录,而这个人的财产@OneToMany List有其他相关记录。

我想获得,在这个例子中,重复的人的五个记录,每个记录都与不同的公司有关,还有与任何公司无关的人

Person              Company     
ID  Name            ID      Name         TableAID
1   Name one        1   Name tableB1        1
2   Name two        2   Name tableB2        1
3   Name three      3   Name tableB3        1
4   Name four       4   Name tableB4        2
5   Name five       5   Name tableB5        3

列出人员列表=";从人员中选择人员">

ID

个人_1:id-1姓名一/公司(1(
人员_1:id-1姓名之一/公司(2:id-5名称五/公司(空(

我的解决方案:
我不得不收集对象列表并解析值,而不是像这样收集实体​​我需要人手。

之前:List personList=query.getResultList((;

之后:列表<对象[]>personList=query.getResultList((;

每个数组都是值​​我从查询中返回的,例如:

Select person, company from Person person left join Company company on 
company.person = person.company

Object[] objectOne = [person, company];
Object[] objectTwo = [person, company];

对于数组的每个值,我投射相同的实体,例如:

Person person = (Person) objectOne[0];
Company company = (Company) objectOne[1];

您还没有展示如何映射Person和Company实体或它们的关系,但对于每一种关系,都有相反的一面。请尝试将其视为公司查询,而不是人员查询。

"选择个人,公司从公司加入公司。个人在哪里">

这将返回一个List<对象[]>其中每一行表示为对象数组,其中位置0是人,位置1是公司。

如果你只有一个人,同样的事情也会朝着另一个方向发展->映射的公司关系:

"选择个人,公司从个人加入个人。公司在哪里">

最新更新